THotPDF.BeginIncrementalUpdate

THotPDF

 

Top  Methods  Next

기존 PDF를 로드하고 문서를 append-only 증분 업데이트 모드로 전환합니다.

 

Delphi syntax:

procedure BeginIncrementalUpdate(const SourceFile: TFileName); overload;

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

 

C++ syntax:

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

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

 

Description

기존 PDF의 원본 바이트를 다시 쓰지 않고 확장해야 할 때 BeginIncrementalUpdate를 호출합니다. HotPDF는 활성 트레일러 또는 xref 스트림 딕셔너리를 파싱하여 영구 ID와 수정 ID를 확보하고, 파일 기반 스트림을 통해 소스 파일을 쓰기 잠금 상태로 유지하며, 소스 전체 사본 대신 크기가 제한된 tail 프로브만 보관합니다

 

로드된 문서 API를 통해 수행한 새 간접 오브젝트와 변경 사항은 자동으로 추적됩니다. 공식 변경 훅 밖의 경로로 오브젝트를 수정하는 코드에서는 MarkDirty를 사용하십시오

 

Standard 암호화 소스라면 사용자 또는 소유자 비밀번호를 인수 2개짜리 오버로드에 전달합니다. 공개 키 암호화 소스라면 PubSecKeyMaterial을 지정한 뒤 인수 1개짜리 오버로드를 호출합니다. HotPDF는 인증된 파일 키(FEK)를 업데이트가 유지되는 동안에만 보관하고, 원래의 문자열, 스트림, 메타데이터, Identity crypt-filter 정책을 그대로 유지하며, 레거시 오브젝트별 키는 오브젝트 번호와 보존된 generation 값으로부터 도출합니다

암호화 딕셔너리는 소스 리비전에서 상속되며, 증분 모드가 활성인 동안에는 새로 도입하거나 교체하거나 재구성할 수 없습니다. 지원되지 않는 이종(heterogeneous) 명시적 crypt-filter 다시 쓰기는 다른 정책으로 암호문을 출력하는 대신 출력 전에 실패합니다

 

이 워크플로우는 이후에 서명 필드를 추가하거나, 메타데이터를 덧붙이거나, 이미 서명된 문서를 확장하면서 이전 디지털 서명이 커버하는 바이트 범위를 그대로 보존하는 데 유용합니다. 소스에 이미 여러 리비전이 있더라도 활성 트레일러가 사용됩니다

 

Adding a second signature

문서를 로드한 뒤에는 현재 페이지가 없으므로, 서명 가능한 필드는 페이지 인덱스를 받는 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');

 

See also: MarkDirty, SaveIncrementalUpdate, AddLoadedSignedSignatureField, GetIncrementalUpdateSourceInfo, AcroForm Support, PDF Filter Support