HPDFWriteHeadlessSignatureReservation

可选的 THPDFHeadlessSignatureMetadata 值成为 Unicode 的 Reason、Location、ContactInfo 与 Name 条目;同一个 StringEncoder 在写入任何字节之前同时作用于字段锁名称与元数据

function HPDFWriteHeadlessSignatureReservation(Target: TStream;
  ObjectNumber, Generation, ReservedCMSBytes, MaxObjectBytes: Integer;
  CAdES: Boolean = False; CertificationPermission: Integer = 0;
  CatalogObjectNumber: Integer = 0; CatalogGeneration: Integer = 0;
  FieldLock: PHPDFHeadlessFieldLock = nil;
  StringEncoder: THPDFHeadlessPolicyStringEncoder = nil;
  StringEncoderContext: Pointer = nil;
  Metadata: PHPDFHeadlessSignatureMetadata = nil;
  DocumentTimestamp: Boolean = False): THPDFHeadlessSignatureReservation;

写出真实的间接签名字典,带定宽数值 ByteRange 槽位与零填充的十六进制 Contents 预留

输出流归调用方所有,必须提供正对象编号、0 到 65535 的 generation、正的 DER 预留与对象字节预算

函数在写入或分配预留之前检查完整字典大小,并以有界分块填充十六进制载荷

需要 ETSI.CAdES.detached 时设 CAdES=true;默认写 adbe.pkcs7.detached

提供有效的 Catalog 引用与 1 到 3 的认证权限即可产出 DocMDP transform;可选字段锁在同一 Reference 数组中产出真实 FieldMDP transform

字段锁名称在写预留之前校验并编码为 UTF-16BE PDF 字符串;加密的低层调用方提供 StringEncoder Callback,接收明文字节并返回加密字符串字节

Callback 在任何预留字节写入之前运行,编码膨胀计入对象预算;THPDFHeadlessDocument 自动提供已认证的文档加密上下文

用共享 xref 写入器登记返回的对象偏移,把对象连接到签名字段,并在调用 HPDFFinalizeHeadlessSignatureReservation 之前完成 PDF trailer

staging 与发布由低层调用方负责;THPDFHeadlessDocument.SignToFile 提供源保护、加密保留、预算与原子文件发布

DocumentTimestamp=true 写 DocTimeStamp/ETSI.RFC3161 而非审批 profile,并禁止认证或字段锁 transform 引用;用 HPDFFinalizeHeadlessDocumentTimestampReservation 收尾