Json &引用;PDF文件的验证失败。”;尝试通过电子邮件发送签名请求时-docusign

Json &引用;PDF文件的验证失败。”;尝试通过电子邮件发送签名请求时-docusign,json,powershell,base64,docusignapi,Json,Powershell,Base64,Docusignapi,****编辑:谢谢你的链接,@Hackerman。我能够让它在Postman中工作,然后使用Docusign Postman示例在Powershell中工作。但是,我无法让它与我自己的PDF文档一起工作。我怀疑这是因为我没有正确地将PDF转换为Base64。有人知道如何通过Powershell实现这一点吗?*** EDIT2:能够使用这个简单的1行程序通过powershell将我的PDF编码到Base64 $docEncodedBase64=[Convert]::ToBase64String((

****编辑:谢谢你的链接,@Hackerman。我能够让它在Postman中工作,然后使用Docusign Postman示例在Powershell中工作。但是,我无法让它与我自己的PDF文档一起工作。我怀疑这是因为我没有正确地将PDF转换为Base64。有人知道如何通过Powershell实现这一点吗?***

EDIT2:能够使用这个简单的1行程序通过powershell将我的PDF编码到Base64 $docEncodedBase64=[Convert]::ToBase64String((获取内容$PDFPath-编码字节))

我们正在尝试使用Powershell 5.0(以及
invoke restmethod
cmdlet)向docusign REST API发出请求,以便通过电子邮件发送签名请求

在我的测试中,我一直遵循这个指南:但是当我发送POST请求时,我遇到了一个错误

我们将按照普通请求(即,不是多部分请求)的路径,以base64编码格式的字节形式提供PDF文档,作为documentBase64属性的值

以下是我将PDF转换为base64字节的代码:

# 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)
然后我定义JSON负载,它将作为POST请求中的主体发送。在这里,我将“documentBase64”属性设置为刚才转换的base64编码字符串

# JSON payload
$jsonPayload = @"
{
    "documents": [
        {
            **"documentBase64": "$docEncoded"**,
            "documentId": "1",
            "fileExtension": "pdf",
            "name": "Mutual_NDA.pdf"        
        }
     ],
     "emailSubject": "Please sign the NDA",
     "recipients": {
         "signers": [
            {
                "email": "the_nda_signer@mailinator.com",
                "name": "Tester test",
                "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} 
有人有这方面的经验吗?也许我将PDF编码为base64不正确?我真的被卡住了。感谢您的帮助! 谢谢


Eric

我的PDF未正确转换为Base64。在Powershell中使用这行代码,我成功地创建并发送了一个信封

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

感谢@Hackerman引用邮递员

我的PDF未正确转换为Base64。在Powershell中使用这行代码,我成功地创建并发送了一个信封

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

感谢@Hackerman引用邮递员

仅出于测试目的……您可以使用另一个工具(如
Postman
)构建有效负载,一旦您有了工作负载,将逻辑移植到powershell:)错误是什么??“错误代码”:“PDF验证失败”,“消息”:“PDF文件验证失败”请遵循关于postman:和此指南:仅用于测试目的…您可以使用另一个工具(如
postman
)构建有效负载,一旦您有了工作负载,将逻辑移植到powershell:)错误是什么??“错误代码”:“PDF验证失败”,“消息”:“PDF文件验证失败”请按照《邮递员指南》和本指南操作: