2016-11-14 1 views
0

**** 편집 : @Hackerman 링크를 보내 주셔서 감사합니다. 나는 Postman에서 일하고 Powershell에서 Docusign 우편 배달부 샘플을 사용하여 얻을 수있었습니다. 그러나 나는 내 자신의 PDF 문서 작업을 얻을 수 없습니다. 필자가 PDF를 Base64로 제대로 변환하지 않았기 때문입니다. ? 사람은 누구나이 파워 쉘 **** 통해 수행 할 수있는 방법을 알고"PDF 파일의 유효성 검사에 실패했습니다." 이메일을 통해 서명 요청을 보내려고 할 때 - docusign

EDIT2 :이 간단한 한 - 라이너 $ docEncodedBase64 = PowerShell을 통해 Base64로 내 PDF 파일을 인코딩 할 수 있었다 :: ToBase64String [변환]을 ((가져 오기 -Content $ PDFPath -Encoding 바이트))

우리는 이메일을 통해 서명 요청을 전송하기 위해 DocuSign의 REST API에 요청을 할 파워 쉘 5.0 (그리고 invoke-restmethod cmdlet을)를 사용하려고합니다. 내 테스트에서

나는이 가이드를 다음되었습니다 https://docs.docusign.com/esign/guide/usage/request_a_signature.html#prepare-the-document-to-send-through-docusign을하지만 우리는 정상적인 요청 (즉,하지 멀티 파트 요청)의 길을 가고있다

내 POST 요청을 보낼 때 오류를 얻고있다, 그리고 따라서 PDF 문서를 base64로 인코딩 된 형식의 바이트로 documentBase64 속성 값으로 제공합니다.

# PDF document 
$docContent = Get-Content 'Mutual_NDA.pdf' 

# PDF as bytes 
$docBytes = [System.Text.Encoding]::Unicode.GetBytes($docContent) 

# PDF as Base-64 Encoded bytes 
$docEncoded = [System.Convert]::ToBase64String($docBytes) 

가 그럼 난 POST 요청의 본문으로 전송됩니다 내 JSON 페이로드를 정의 :

다음은베이스 64 바이트로 PDF를 변환하는 내 코드입니다. 여기서는 'documentBase64'속성을 방금 변환 한 base64 인코딩 된 문자열로 설정합니다.

# JSON payload 
$jsonPayload = @" 
{ 
    "documents": [ 
     { 
      **"documentBase64": "$docEncoded"**, 
      "documentId": "1", 
      "fileExtension": "pdf", 
      "name": "Mutual_NDA.pdf"   
     } 
    ], 
    "emailSubject": "Please sign the NDA", 
    "recipients": { 
     "signers": [ 
      { 
       "email": "[email protected]", 
       "name": "Darlene Petersen", 
       "recipientId": "1", 
       "routingOrder": "1", 
       "tabs": { 
        "dateSignedTabs": [ 
         { 
          "anchorString": "signer1date", 
          "anchorYOffset": "-6", 
          "fontSize": "Size12", 
          "name": "Date Signed", 
          "recipientId": "1", 
          "tabLabel": "date_signed" 
         } 
        ], 
        "fullNameTabs": [ 
         { 
          "anchorString": "signer1name", 
          "anchorYOffset": "-6", 
          "fontSize": "Size12", 
          "name": "Full Name", 
          "recipientId": "1", 
          "tabLabel": "Full Name"  
         } 
        ], 
        "signHereTabs": [ 
         { 
          "anchorString": "signer1sig", 
          "anchorUnits": "mms", 
          "anchorXOffset": "0", 
          "anchorYOffset": "0", 
          "name": "Please sign here", 
          "optional": "false", 
          "recipientId": "1", 
          "scaleValue": 1, 
          "tabLabel": "signer1sig" 
         } 
        ] 
       } 
      } 
     ] 
    }, 
    "status": "sent"     
} 
"@ 

그리고 마지막으로는 HTTP 요청 :

$Envelope = Invoke-RestMethod -uri ($BaseURL + '/envelopes') -Method Post -Body $jsonPayload -ContentType 'application/json' -Headers @{"X-Docusign-Authentication" = $XMLHeader} 

사람이 경험이? 아마도 base64로 PDF를 잘못 인코딩하고 있습니까? 나는 정말로 붙어있다. 어떤 도움을 주셔서 감사합니다! 감사합니다,

에릭

+0

그냥 테스트를 위해 ...'Postman'과 같은 다른 도구를 사용하여 페이로드를 빌드하고 일단 작업량이 있으면 powershell에 로직을 포트하십시오. – Hackerman

+0

whats the error ??? – 4c74356b41

+0

"errorCode": "PDF_VALIDATION_FAILED", "message": "PDF 파일의 유효성 검사에 실패했습니다." – Quanda

답변

0

내 PDF가 제대로 Base64로로 전환되지 않았습니다. Powershell에서이 코드 줄을 사용하여 봉투를 만들고 보낼 수있었습니다.

$docEncodedBase64 = [Convert]::ToBase64String((Get-Content $PDFPath -Encoding Byte)) 

@Hackerman이 Postman을 참조했기 때문에 감사합니다!