如何使用DocuSign在现有PDF文件中设置签名占位符?
关于DocuSign在PDF中设置签名占位符的问题
当然可以使用DocuSign在PDF文件中设置签名占位符,你的代码已经采用了锚点定位的方式来实现,不过可以从以下几个方面排查问题,确保功能正常:
- 验证PDF中的锚点文本:代码里使用
AnchorString = "/sn1/"作为锚点标记,必须确保你的PDF文件中确实存在/sn1/这段文本,DocuSign会自动识别该文本位置,并根据AnchorXOffset和AnchorYOffset的数值调整签名框的偏移位置。 - 调整锚点单位与偏移值:你设置的
AnchorUnits = "pixels"是合法单位,但如果签名位置不符合预期,可以尝试调整AnchorXOffset、AnchorYOffset的数值,或者切换为"inches"(英寸)、"centimeters"(厘米)这类更直观的单位。 - 确认ID的唯一性:代码中文档ID设为
"3"、收件人ID设为"1",只要确保这些ID在当前信封内唯一即可,不会影响功能。 - 可选:直接指定坐标位置:如果不想依赖锚点文本,也可以通过直接设置坐标来固定签名占位符位置,示例代码如下:
SignHere signHere1 = new SignHere { PageNumber = "1", // 指定签名所在页码 XPosition = "150", // 横坐标 YPosition = "250", // 纵坐标 DocumentId = "3" // 关联目标文档ID };
附上你提供的完整代码:
public static EnvelopeDefinition MakeEnvelope(string signerEmail, string signerName, string signerClientId, string docPdf) { byte[] buffer = System.IO.File.ReadAllBytes(docPdf); EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition(); envelopeDefinition.EmailSubject = "Please sign this document"; Document doc1 = new Document(); string doc1b64 = Convert.ToBase64String(buffer); doc1.DocumentBase64 = doc1b64; doc1.Name = "Lorem Ipsum"; // can be different from actual file name doc1.FileExtension = "pdf"; doc1.DocumentId = "3"; envelopeDefinition.Documents = new List<Document> { doc1 }; Signer signer1 = new Signer { Email = signerEmail, Name = signerName, ClientUserId = signerClientId, RecipientId = "1", }; SignHere signHere1 = new SignHere { AnchorString = "/sn1/", AnchorUnits = "pixels", AnchorXOffset = "10", AnchorYOffset = "20", }; Tabs signer1Tabs = new Tabs { SignHereTabs = new List<SignHere> { signHere1 }, }; signer1.Tabs = signer1Tabs; Recipients recipients = new Recipients { Signers = new List<Signer> { signer1 }, }; envelopeDefinition.Recipients = recipients; envelopeDefinition.Status = "sent"; return envelopeDefinition; }
内容的提问来源于stack exchange,提问作者Sami In
相关产品推荐
相关产品推荐

