THotPDF.SaveIncrementalUpdate

THotPDF

 

Previous  Methods  THotPDF

Writes a sparse incremental revision while preserving every original source byte

 

Delphi syntax:

procedure SaveIncrementalUpdate(const TargetFile: TFileName);

 

C++ syntax:

void __fastcall SaveIncrementalUpdate(System::Sysutils::TFileName TargetFile);

 

procedure SaveIncrementalUpdate(const TargetFile: TFileName); overload;

유계 오버로드

procedure SaveIncrementalUpdate(const TargetFile: TFileName;
  MaxOutputBytes: Int64; Checkpoint: TNotifyEvent); overload;

양수 MaxOutputBytes는 BeginIncrementalUpdate를 요구하며 원본 접두부 전체와 덧붙인 delta를 한도로 묶습니다. 음수 한도는 잘못된 값이고, 0은 기존의 무한 동작을 유지합니다

양수 한도 오버로드는 delta를 임시 저장소로 스필하고, 직렬화가 한도를 넘으면 공개 전에 EHPDFIncrementalOutputBudget을 발생시킵니다. 그 실패 경로에서는 기존 대상이 보존됩니다

Checkpoint는 객체 순회와 공개 복사 동안 문서를, 쓰기 동안 내부 스핀을 받습니다. 특정 Sender 타입에 의존하지 마십시오

이 저수준 저장은 별개 대상을 위한 원자적 교체 API가 아닙니다. 공개 중 cancellation이나 I/O 실패가 부분 파일을 남길 수 있으므로, 원자적 외부 공개에는 비공개 후보 파일이나 검증된 증분 서명 job을 사용하십시오

Description

SaveIncrementalUpdate는 BeginIncrementalUpdate로 시작한 워크플로를 마무리합니다. 변경, 신규, 삭제된 객체만 방문해 출력하며, sparse xref 서브섹션과 /Prev가 이전 리비전을 가리키는 trailer를 함께 기록합니다

대상이 다르면 완성된 delta를 덧붙이기 전에 파일 기반 원본에서 원래의 앞부분을 순차적으로 복사합니다. 대상이 같으면 HotPDF는 원본의 ID, 길이, 쓰기 시각을 검증하고, lazy 원본 핸들을 해제한 다음 직접 덧붙이고 파일을 flush하며, 덧붙이기에 실패하면 원래 길이로 잘라 되돌립니다. 두 경로 모두 기존 바이트 범위와 이전 서명을 보존합니다

 

dirty 또는 삭제된 객체가 없으면 대상은 원본과 바이트 단위로 동일하며 xref 섹션, trailer, 개행, EOF 마커를 덧붙이지 않습니다. 리비전이 필요하면 첫 번째 trailer ID는 그대로 유지하고 두 번째 수정 ID만 교체합니다

암호화된 원본의 경우, 덧붙이는 trailer는 원래의 /Encrypt 객체 및 generation 참조를 그대로 반복합니다. 다시 쓴 문자열과 스트림도 원본 security handler로 계속 보호되며, 결과 문서는 원래의 Standard user/owner 패스워드나 public-key 수신자 자격 증명을 그대로 받아들입니다

같은 대상에 덧붙이기에 성공하면 원래 리비전이 제자리에서 바뀌었으므로 보유 중이던 원본이 소진됩니다. 다른 리비전을 만들기 전에 BeginIncrementalUpdate를 다시 호출하세요. GetIncrementalUpdateSourceInfo는 유지된 바이트, 프로브 바이트, 복사 및 덧붙이기 횟수, 추적된 변경, 방문한 객체, xref 항목, 잠금, 소진 상태를 알려 줍니다

파괴적 편집은 활성 free-object 체인 전체를 자동으로 다시 구성합니다. 기존 free generation은 보존되고, 새로 해제된 generation은 65535까지 올라가며, 다시 쓴 객체는 원래 generation을 유지하고, 출력되는 모든 항목은 객체 번호순으로 정렬됩니다. GetLastIncrementalXRefRebuildInfo는 저장 후 원본, 전이, 포화, 재구성된 체인의 개수를 반환합니다

이후 서명 리비전을 추가할 때는 새 서명을 준비하거나 삽입하기 전에 이 메서드를 호출하세요. 덧붙인 파일이 생기고 나면 일반 서명 헬퍼를 사용해 새 서명 값을 예약하고 채웁니다

certified 또는 usage-rights 문서에는 SaveIncrementalUpdateAuthenticated가 같은 디렉터리에 후보 파일을 쓰고, 정책이 걸린 각 서명을 인증하고, 이후의 모든 리비전에 정책을 적용한 뒤, 모든 정책이 업데이트를 받아들인 경우에만 대상을 atomic하게 교체합니다

 

See also: BeginIncrementalUpdate, MarkDirty, SaveIncrementalUpdateAuthenticated, GetIncrementalUpdateSourceInfo, GetLastIncrementalXRefRebuildInfo, AcroForm Support, PDF Filter Support