2016-11-14 1 views
0

**** EDIT: Danke für diese Links, @Hackerman. Ich konnte es in Postman und dann in Powershell mit dem Docusign Postman Sample arbeiten lassen. Ich kann jedoch nicht mit meinen eigenen PDF-Dokumenten arbeiten. Ich vermute, dass dies daran liegt, dass ich meine PDFs nicht richtig in Base64 umwandle. Wer weiß, wie dies kann über Powershell ****"Die Validierung der PDF-Datei ist fehlgeschlagen." wenn Sie versuchen, Signieranfrage per E-Mail zu senden - docusign

EDIT2 getan werden: War der Lage, meine PDFs zu Base64 via Powershell mit diesem einfachen 1-liner $ docEncodedBase64 = [Konvertieren] :: ToBase64String ((Get zu kodieren -Inhalt $ PDFPath -Encoding Byte))

Wir versuchen, Powershell 5.0 zu verwenden (und das invoke-restmethod Cmdlets) auf Anfragen an das DocuSign REST-API zu machen, um eine Signaturanforderung per E-Mail zu senden.

In meinen Tests habe ich nach dieser Anleitung: https://docs.docusign.com/esign/guide/usage/request_a_signature.html#prepare-the-document-to-send-through-docusign aber eine Störung erhalte, wenn ich

meine POST-Anfrage senden

wir die Route einer normalen Anfrage werden (dh nicht mehrteilige Anfrage), und Dadurch wird das PDF-Dokument als Byte im Base64-kodierten Format als Wert der Eigenschaft documentBase64 bereitgestellt.

Hier ist mein Code, um das PDF zu base64 Bytes zu konvertieren:

# 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) 

Dann meine JSON Nutzlast ich definieren, die als der Körper in der POST-Anforderung gesendet wird. Hier setze ich die Eigenschaft 'documentBase64' auf die Base64-codierte Zeichenfolge, die ich gerade oben konvertiert habe.

# 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"     
} 
"@ 

Und schließlich, die HTTP-Anforderung:

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

Wer hat Erfahrung mit diesem haben? Vielleicht kodiere ich das PDF als Base64 falsch? Ich bin wirklich festgefahren. Jede Hilfe wird geschätzt! Danke,

Eric

+0

Nur zu Testzwecken ... können Sie die Payload mit einem anderen Tool wie 'Postman' erstellen und sobald Sie eine funktionierende Payload haben, portieren Sie die Logik in Powershell :) – Hackerman

+0

was ist der Fehler ??? – 4c74356b41

+0

"errorCode": "PDF_VALIDATION_FAILED", "Nachricht": "Die Validierung der PDF-Datei ist fehlgeschlagen." – Quanda

Antwort

0

My PDF nicht richtig Base64 Umwandlung wurde. diese Codezeile in Powershell Ich konnte erfolgreich erstellen und einen Umschlag

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

Dank @Hackerman zur Referenzierung Postman senden!

Verwandte Themen