THotPDF.AddLoadedSignedSignatureField 方法

向已加载的文档添加一个随时可签名的签名字段。该字段携带的签名字典预留了 /ByteRange 和 /Contents 空间,因此文档保存后,SignPDFWithPFX、PreparePDFForSigning 和 InsertSignatureHex 即可对其签名。配合 BeginIncrementalUpdate 使用,已签名的 PDF 就能通过这种方式获得第二个签名

声明

function AddLoadedSignedSignatureField(PageIndex: Integer; X1, Y1, X2, Y2: Single;
  const AFieldName: AnsiString; ContentsBytes: Integer = 8192;
  const SubFilter: AnsiString = 'adbe.pkcs7.detached';
  const Reason: AnsiString = ''; const Location: AnsiString = '';
  const ContactName: AnsiString = ''): Integer;

单元

HPDFDoc

参数

名称用途
PageIndex显示签名控件的已加载页面的从零起算索引
X1, Y1, X2, Y2PDF 用户空间中的控件矩形(单位为点,原点在左下角);宽度和高度必须为正值
AFieldName新签名字段的名称;不能为空,也不能与文档中已有字段重名
ContentsBytes为 CMS 签名预留的字节数(写入时会占用两倍数量的十六进制字符);必须能容纳完整签名,包括证书和任何时间戳令牌
SubFilter签名格式,例如 adbe.pkcs7.detached 或 ETSI.CAdES.detached
Reason, Location, ContactName签名字典中可选的 /Reason、/Location 和 /ContactInfo 条目

返回值

返回新表单字段的索引;当 PageIndex 超出范围时返回 -1

使用说明

示例

PDF := THotPDF.Create(nil);
try
  PDF.BeginIncrementalUpdate('Signed.pdf');
  PDF.AddLoadedSignedSignatureField(0, 300, 120, 500, 160, 'Approver', 8192,
    'adbe.pkcs7.detached', 'Approved');
  PDF.SaveIncrementalUpdate('Prepared.pdf');
finally
  PDF.Free;
end;
// Signs the reserved field; the first signature stays valid
THotPDF.SignPDFWithPFX('Prepared.pdf', 'SignedTwice.pdf', 'Signer.pfx', 'password');

相关 API