THotPDF.PrepareLoadedFormDataRevisionToStream

在不改动原文档的前提下,为真实已加载对象图准备私有修订

声明

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

行为

方法把原始修订复制到独占创建的私有文件,加载独立的增量文档,按对象编号与 generation 比较语义对象图,克隆真实待定变更,并在目标当前位置写出候选结果

文本值、既有外观、无关的待定 catalog 变更、间接引用、流内容与新对象图对象都参与准备;PDF 名称只解码一次,重复的语义字典名无效

未变化的对象图按字节精确复制原始内容、不追加空增量交叉引用节;有变化的对象图保留完整原始字节前缀并追加当前修订

加密修订保留原加密字典与密钥;Password 必须能认证原始修订,以 UTF-8 字节提供

提供 OriginalSource 时,它必须是加载本文档所用的完整不可变原始修订,包括密文与已签名字节;成功或失败都会恢复其位置

未提供 OriginalSource 时方法使用 CopyLoadedSourceToStream;这不会把外部可变的借入源变成不可变快照,调用方必须自己保全其确切已加载字节

MaxWorkingBytes 至少 1 MiB;MaxOutputBytes 与 MaxObjects 必须为正;源复制、对象比较、驻留与溢出克隆数据以及输出长度都有有限上限

复制与比较期间轮询 OperationCancellationToken 与 Checkpoint;复制按不超过 64 KiB 的块进行;准备失败可能在目标留下部分字节,调用方必须丢弃

这个低层方法只准备对象图修订,不在 DocMDP 或 FieldMDP 下授权待定变更;发布表单更新前请用 THPDFWindowsFormDataTransaction 认证签名策略

无论准备成功还是失败,原 THotPDF 对象图、源所有权、待定变更与设置都保持不变;方法退出时关闭并删除临时文件

相关主题

CopyLoadedSourceToStream, THPDFWindowsFormDataTransaction, Windows FDF/XFDF 交换