THotPDF.BeginIncrementalUpdate

THotPDF

 

顶部  方法  下一页

加载现有 PDF,并将文档切换到 append-only incremental update mode

 

Delphi 语法:

procedure BeginIncrementalUpdate(const SourceFile: TFileName); overload;

procedure BeginIncrementalUpdate(const SourceFile: TFileName; const Password: AnsiString); overload;

 

C++ 语法:

void __fastcall BeginIncrementalUpdate(System::Sysutils::TFileName SourceFile);

void __fastcall BeginIncrementalUpdate(System::Sysutils::TFileName SourceFile, const System::AnsiString Password);

 

说明

当需要扩展现有 PDF 而不重写其原始字节时,调用 BeginIncrementalUpdate。HotPDF 通过正常 load path 解析源文件,并为后续保存步骤保留原始文件的逐字节副本

 

经已加载文档 API 执行的新建间接对象和修改会被自动跟踪。代码经官方修改钩子之外的路径更改对象时,请使用 MarkDirty(代码经官方修改钩子之外的路径更改对象时)

 

Standard 加密的源请把 user 或 owner 口令传给双参数重载。公钥加密的源请赋值 PubSecKeyMaterial 并调用单参数重载。HotPDF 只在更新生命周期内保留已认证的文件密钥或 FEK,保留原始 string、stream、metadata 与 Identity crypt filter 策略,并从对象号及其保留 generation 共同派生旧式逐对象密钥

加密字典继承自源修订;增量模式激活期间不能引入、替换或重配。不受支持的异构显式 crypt filter 重写在输出前失败,而不是按不同策略输出密文

 

该工作流适合添加后续签名字段、追加元数据,或在保留早期数字签名覆盖的字节区间的同时扩展已签名文档。即使源已包含多个修订,也使用活动 trailer

 

添加第二个签名

文档加载后没有当前页面,所以可签名字段要用 AddLoadedSignedSignatureField 添加,它直接接收页码。它预留的签名空间由 SignPDFWithPFX(外部签名器则用 PreparePDFForSigning 和 InsertSignatureHex)在更新保存后填入。新签名覆盖整个文件,早期签名因为字节未被触碰而保持有效

PDF := THotPDF.Create(nil);
try
  PDF.BeginIncrementalUpdate('Signed.pdf');
  PDF.AddLoadedSignedSignatureField(0, 300, 120, 500, 160, 'Approver', 8192);
  PDF.SaveIncrementalUpdate('Prepared.pdf');
finally
  PDF.Free;
end;
THotPDF.SignPDFWithPFX('Prepared.pdf', 'SignedTwice.pdf', 'Signer.pfx', 'password');

 

另请参阅: MarkDirty, SaveIncrementalUpdate, AddLoadedSignedSignatureField, GetIncrementalUpdateSourceInfo、AcroForm 支持, PDF 过滤器支持