THotPDF.PrepareLoadedFormDataRevisionToStream

在不更動原始文件的前提下,為實際已載入的物件圖準備私有修訂

宣告

procedure PrepareLoadedFormDataRevisionToStream(Destination: TStream;
  const Password: AnsiString; MaxWorkingBytes, MaxOutputBytes: Int64;
  MaxObjects: Integer; Checkpoint: TNotifyEvent = nil;
  OriginalSource: TStream = nil);

行為

此方法把原始修訂複製到獨佔建立的私有檔案、載入另一份增量文件、以物件編號與 generation 比較語意物件圖、複製實際的待套用變更,並在目前目的地位置寫出產生的候選修訂

文字值、既有外觀、無關的待套用 catalog 變更、間接參照、stream 內容與新的圖物件都會參與準備;PDF 名稱只解碼一次,重複的語意 dictionary 名稱視為無效

未變更的物件圖會原樣複製原始位元組,不附加空的增量 cross-reference 段;已變更的物件圖保留完整的原始位元組前綴,並附加其目前修訂

加密修訂保留原始的加密 dictionary 與金鑰;Password 必須能通過原始修訂的驗證,並以 UTF-8 位元組提供

提供 OriginalSource 時,它必須是本文件載入來源的完整不可變原始修訂,包含密文與已簽署位元組;成功或失敗時都會還原其位置

未提供 OriginalSource 時,方法改用 CopyLoadedSourceToStream;這不會把外部可變的借用來源變成不可變快照,呼叫端必須自行保存其精確的已載入位元組

MaxWorkingBytes 至少 1 MiB;MaxOutputBytes 與 MaxObjects 必須為正;來源複製、物件比較、常駐與溢寫的 clone 資料以及輸出長度都有有限界限

複製與比較期間會輪詢 OperationCancellationToken 與 Checkpoint;複製以不超過 64 KiB 的區塊進行;準備失敗可能在目的地留下部分位元組,呼叫端必須捨棄

這個低階方法只準備物件圖修訂,不會在 DocMDP 或 FieldMDP 下授權待套用變更;發布表單更新之前,請用 THPDFWindowsFormDataTransaction 驗證簽章政策

無論準備成功或失敗,原始 THotPDF 物件圖、來源所有權、待套用變更與設定都保持完整;方法結束時會關閉並刪除暫存檔

相關主題

CopyLoadedSourceToStream、THPDFWindowsFormDataTransaction、Windows FDF/XFDF 交換