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;
寫出真實的間接簽章 dictionary,含固定數值的 ByteRange 槽位與零填充的十六進位 Contents 保留區
呼叫端持有輸出 stream,必須提供正的物件編號、0 到 65535 的 generation、正的 DER 保留區,以及物件位元組預算
函式在寫出或配置保留區之前檢查完整的 dictionary 大小,並以有界區塊填入其十六進位 payload
CAdES=true 寫出 ETSI.CAdES.detached;預設寫出 adbe.pkcs7.detached
提供有效的 Catalog 參照與 1 到 3 的認證權限即可發出 DocMDP transform;選填的欄位鎖定會在同一個 Reference 陣列中發出真實的 FieldMDP transform
欄位鎖定名稱會先驗證並編碼成 UTF-16BE PDF 字串,再寫出保留區;加密情境的低階呼叫端提供 StringEncoder callback,接收明文位元組並回傳加密字串位元組
callback 在任何保留區位元組寫出之前執行,編碼造成的膨脹計入物件預算;THPDFHeadlessDocument 會自動提供已驗證的文件加密 context
把回傳的物件偏移註冊到共用的 xref 寫入器、把物件連結到簽名欄位,並完成 PDF trailer,再呼叫 HPDFFinalizeHeadlessSignatureReservation
暫存與發布由低階呼叫端自行負責;THPDFHeadlessDocument.SignToFile 提供來源保護、加密保留、預算與原子檔案發布
DocumentTimestamp=true 寫出 DocTimeStamp/ETSI.RFC3161 而非 approval 設定檔,並禁止認證或欄位鎖定 transform 參照;以 HPDFFinalizeHeadlessDocumentTimestampReservation 收尾