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 與結果資料;失敗會保持借用的文件與來源不變