THPDFHeadlessDocument.SignToFile
function SignToFile(FieldIndex: Integer; const FileName: string;
const CertificatePEM, PrivateKeyPEM: SysUtils.TBytes;
const Options: THPDFHeadlessCMSOptions;
ReservedCMSBytes: Integer = 16384): THPDFHeadlessCMSResult;
簽署既有的未簽署 AcroForm 簽名欄位,並在原生 Linux 或 Windows 上以原子方式發布獨立輸出
FieldIndex 是 FindFormField 或 GetFormField 回傳的零基表單欄位索引,可能與 VerifySignature 接受的已簽署簽章索引不同
憑證與對應的私鑰必須是 PEM 位元組;加密私鑰會直接拒絕、不會提示,OpenSSL 3 則透過與 HPDFSignHeadlessCMS 相同的 provider 載入
ReservedCMSBytes 在雜湊前保留固定的十六進位 Contents 空隙;必須為正、符合文件物件預算,並容得下完整產生的 CMS DER
預設設定檔為 adbe.pkcs7.detached;RequireCAdES=true 會寫入 ETSI.CAdES.detached 並包含 signing-certificate 屬性,文件驗證會自動驗證其 ESS 綁定,明確的 CA 信任則另行評估
寫入器複製來源位元組、透過共用的 xref 寫入器附加替換欄位值與新的簽章物件、修補固定寬度的 ByteRange 槽位、對實際暫存檔範圍簽章,並在 flush 與原子發布之前驗證產生的 CMS
每個較舊的 approval signature 都保留其原始位元組;其驗證結果會回報有效的較早修訂,以及其後未簽署的位元組數
來源以唯讀開啟,簽署不會改變已載入的欄位圖,來源路徑別名或實體檔案別名會被拒絕
失敗時保留既有目的地並刪除未發布的暫存檔,包括取消、保留空間不足、憑證/私鑰失敗、密碼學錯誤,以及物件或檔案預算耗盡
唯讀欄位、已簽署欄位值、不被允許的認證文件政策與被拒的 AES 表單填寫權限都會被拒絕;owner 認證可授權受限來源,輸出則保留原始使用者密碼與安全性政策
CertificationPermission 為 1 到 3 時建立首份認證簽署,帶 catalog 的 Perms.DocMDP 與 SigRef transform;0 建立 approval signature,包括在 DocMDP P2 或 P3 下既有欄位中被允許的後續簽章
文件與 CMS 選項都指定 cancellation token 時必須是同一個;否則 CMS provider 繼承文件的 token
回傳的 THPDFHeadlessCMSResult 把完整性與明確評估的 CA 信任分開;不隱含任何時間戳、撤銷或長期驗證結論
準備新的可見簽章 widget 用 AddSignatureField 與 SetSignatureFieldAppearance;透過 OpenSSL 3 載入 PKCS12 身分則用 SignPFXToFile
附加獨立的 RFC3161 文件時間戳、又不需要應用程式簽署身分時,使用 TimestampToFile