THPDFWindowsFormDataTransaction
HPDFWindowsFormData 提供一座 Windows 橋接,把目前的 THotPDF 圖形接到原生已驗證的 FDF/XFDF 引擎
宣告
constructor Create(Document: THotPDF; OriginalSource: TStream;
const Password: AnsiString; const Limits: THPDFWindowsFormDataLimits;
Checkpoint: TNotifyEvent = nil);
procedure SetSignaturePolicyOptions(const Options: THPDFHeadlessCMSOptions);
function ExportData(Format: THPDFHeadlessFormDataFormat;
const Options: THPDFHeadlessFormDataOptions): TBytes;
procedure ImportData(const Bytes: TBytes; Format: THPDFHeadlessFormDataFormat;
const Fonts: THPDFHeadlessRichTextFonts;
const AppearanceOptions: THPDFHeadlessTextAppearanceOptions;
const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
procedure ImportDataWithFamilies(const Bytes: TBytes;
Format: THPDFHeadlessFormDataFormat; const Families: THPDFHeadlessRichTextFontFamilies;
const AppearanceOptions: THPDFHeadlessTextAppearanceOptions;
const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
procedure FillTypedData(const Updates: THPDFHeadlessRichTextFieldUpdates;
const Options: THPDFHeadlessFormDataOptions; const Password: AnsiString);
function PreparedFieldCount: Integer;
procedure GetPreparedField(Index: Integer; out Name, Value: UnicodeString;
out FieldType: Integer);
procedure WritePreparedPDF(Destination: TStream);
procedure TakeCandidate(out Document: THotPDF;
out Source: THPDFWindowsFormDataSource);
property ChangedFields: Integer;
property CancellationToken: THPDFCancellationToken;
所有權與原則
Document、OriginalSource 與 Checkpoint 都是借用,直到解構為止;OriginalSource 必須與文件已載入的原始修訂完全對應;建構子會複製並封存一份私有的原始來源、驗證其 AES 憑證,並在另一份私有來源中準備實際的待提交圖形
原生引擎會檢查既有簽章完整性與 ESS 憑證綁定、DocMDP 權限、FieldMDP 鎖與欄位唯讀旗標;允許的 P2/P3 更新會重新產生真實外觀,同時保留原始已簽署位元組
必填的信任、時間戳記與已簽署撤銷檢查可用 SetSignaturePolicyOptions 設定;一般的完整性檢查並不代表信任某個未指明的商業根憑證
ImportData 會準備一份候選 PDF 與一份另外載入的 THotPDF;它不會變動被借用的文件;語意上未改變的匯入仍會先驗證已簽署原則,再複製精確的目前修訂
WritePreparedPDF 把受限的候選位元組複製到提供的串流;必須先成功完成每個必要的 PDF 與 result callback,才能呼叫 TakeCandidate;失敗或取消表示丟棄這筆交易
TakeCandidate 會移交 THotPDF 與其 THPDFWindowsFormDataSource 的所有權;請先解構文件再解構其來源;候選不會保留交易自己的取消權杖
THPDFWindowsFormDataSource 擁有一個獨占建立的暫存檔;Seal 會 flush 並以唯讀方式重新開啟;解構時關閉並移除該檔案;來源 callback 的壽命不超過擁有它的來源
ExportAnnotations 與 ImportAnnotations 實作映射註解 XFDF 交換;ChangedAnnotations 回報映射 XFDF 匯入的附加計數,與 ChangedFields 使用同一個準備變更計數器
限制
FillTypedData 在同一份候選中準備混合的純量欄位與原始 typed rich run,不需要 RV 解碼往返;prepared-field 存取子讀取的是實際產生的候選
ImportDataWithFamilies 選擇一到十六個具名家族,使用實際的樣式程式與同樣的已驗證候選生命週期;原本的 ImportData 方法保留其單一家族行為
THPDFWindowsFormDataLimits.Default 把 MaxWorkingBytes 設為 256 MiB、MaxOutputBytes 128 MiB、MaxObjects 100000、MaxPages 10000;工作容量至少 1 MiB,其他容量都必須為正
CancellationToken 是借用的,只在交易解構前有效;它在原生解析、rich XML 解碼、原則驗證與複製期間,輪詢原始文件的操作權杖與 Checkpoint
這個 Windows 類別適用於新版 Delphi、C++Builder 與 Windows FPC;原生 Linux 直接使用 THPDFHeadlessDocument
相關主題
Windows FDF/XFDF 交換、目前圖形的準備、原生表單資料
FDF 註解圖形
ExportAnnotationsFDF 回傳註解計數,並把有界二進位 FDF 寫入 Bytes;ImportAnnotationsFDF 使用 THPDFFDFOptions 準備候選
FDF profile 保留已提供的外觀資源與共用間接物件;同一頁上相符的 NM 值選中要被替換的既有註解
FDF 方法使用同樣的借用文件所有權、已驗證政策與候選準備生命週期;ChangedAnnotations 統計實際替換與附加,等價匯入保留精確的目前修訂版
註解移除
RemoveAnnotations 透過同樣的候選生命週期準備精確的頁面加 NM 移除,包括相依的 popup 與回覆;ChangedAnnotations 對全部移除只計一次
在 TakeCandidate 之前發布 PDF 與結果資料;失敗會保持借用的文件與來源不變