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 交換