我遇到SignHereTabs在DocuSign文档中出现问题的问题。
我使用ITextSharp来获取包含许多字段的PDF表单模板,我将数据设置到字段中,留下2个适当命名的签名字段,然后使用GetFieldPositions获取签名字段的位置,并在这些位置找到SignHereTab坐标。但是,在DocuSign的最终文档中,选项卡位于错误的位置。
以下是我阅读AcroField职位的代码
var pdfReader = new PdfReader(pdfFilename);
var fieldPositions =pdfReader.AcroFields.GetFieldPositions("Signature");
var PageNumber = (int)fieldPositions[0];
var XPosition = (int)Math.Ceiling(fieldPositions[1]);
var YPosition = (int)(pageHeight - (fieldPositions[2] + fieldPositions[4])/2);
然后将它们添加到XML的正确位置。
示例图片在这里http://i60.tinypic.com/sboizr.png
我不确定这是PDF,ITextSharp还是DocuSign的问题。
答案 0 :(得分:0)
DocuSign的坐标系与mkl建议的一样,原点(0,0)位于文档的左上角,x值随着向右移动而增加,y值增加为你移动下来。我从来没有使用过iTextSharp所以我不知道它的坐标系是如何工作的,但你应该能够将坐标空间转换成所需的坐标空间。
如果您展示了发送给DocuSign API的JSON请求正文,那将会有所帮助。在没有看到这一点的情况下,我在这里可以添加的另一件事是DocuSign为您提供了两种指定位置的方法 - 绝对定位或相对定位。此外,默认的度量单位是像素。
话虽如此,如果您在放置DocuSign signHere
标签时使用绝对定位,您的(部分)JSON可能如下所示:
"tabs": {
"signHereTabs": [
{
"xPosition": "100",
"yPosition": "100",
"documentId": "1",
"pageNumber": "1"
}
]
}
这表示将一个signHere选项卡放在右侧100个像素,从文档第1页左上角开始向下100个像素。另一方面,如果您想使用相对或锚定基于定位,这允许您根据实际文档内容放置DocuSign标签,您的请求可能如下所示:
"tabs": {
"signHereTabs": [
{
"anchorString": "Please Sign Here:",
"anchorXOffset": "1",
"anchorYOffset": "0",
"anchorIgnoreIfNotPresent": "false",
"anchorUnits": "inches"
}
]
}
上面的JSON会将签名标签放在文档中的任何位置,在该文档中找到文本“ Please Sign Here:”,并将标签放在该文本右侧的1英寸处并且在同一高度(因为yOffset为0)。接受的度量单位为pixels
(默认),cms
,mms
和inches
。
有关DocuSign标签定位的更多信息,请参见here