我在DocuSign文档中出现不适当的SignHereTab问题。
我使用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的问题。
最佳答案
DocuSign的坐标系与mkl所建议的一样,原点(0,0)在文档的左上方,并且x值随着向右移动而增加,y值随着向下移动而增加。我从未使用过iTextSharp,所以我不知道它的坐标系如何工作,但是您应该能够将坐标空间转换为所需的坐标空间。
如果您显示要发送到DocuSign的API的JSON请求正文,这将有所帮助。不用说,我可以在这里添加的唯一一件事是DocuSign为您提供了两种不同的位置指定方式-绝对定位或相对定位。此外,默认的度量单位是像素。
话虽如此,如果您在放置DocuSign signHere
选项卡时使用绝对定位,则(部分)JSON可能如下所示:
"tabs": {
"signHereTabs": [
{
"xPosition": "100",
"yPosition": "100",
"documentId": "1",
"pageNumber": "1"
}
]
}
这将指示在文档第1页的右上方100像素和左下方100像素下方放置一个符号。另一方面,如果要使用“相对”或“基于锚点”定位,该定位允许您根据实际文档内容放置DocuSign选项卡,则您的请求可能类似于:
"tabs": {
"signHereTabs": [
{
"anchorString": "Please Sign Here:",
"anchorXOffset": "1",
"anchorYOffset": "0",
"anchorIgnoreIfNotPresent": "false",
"anchorUnits": "inches"
}
]
}
上面的JSON会依次将签名标签放置在文档中找到“请在此处签名:”文本的任何位置,并将标签恰好位于该文本右侧1英寸处且高度相同(因为yOffset为0 )。可接受的度量单位为
pixels
(默认值),cms
,mms
和inches
。有关DocuSign选项卡定位的更多信息,请参见here
关于c# - C#的DocuSign和PDF/ITextSharp定位问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26058883/