PDFium Delphi Component Docs

증분 저장 세션

컴포넌트: TPdf  ·  유닛: PDFium
이전 출력 바이트를 모두 보존하면서 변경되거나 새로 생긴 간접 객체만 추가합니다

Syntax

procedure BeginIncrementalSave(AllowSignedDocument: Boolean = False);

function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;

function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;

procedure EndIncrementalSave;

property IncrementalSaveActive: Boolean;

AllowSignedDocument서명된 문서에서의 세션을 명시적으로 허용하며 기본값은 거부입니다
Stream이 커밋 후 누적된 전체 PDF를 받는 TStream입니다
FileName형제 임시 파일이 성공한 뒤에만 교체되는 출력 경로입니다
Info대상 쓰기가 성공한 후 반환되는 커밋별 통계입니다

Commit Information

ChangedObjectCount이 커밋에서 추가한 변경 또는 신규 간접 객체 수
AppendedByteCount이전 출력의 정확한 접두사 뒤에 추가된 바이트 수
OutputByteCount이 커밋이 반환한 전체 출력의 총 바이트 수
RevisionCount현재 세션에서 커밋된 비어 있지 않은 리비전 수

Description

BeginIncrementalSave는 비교 기준선이자 첫 번째 완전한 출력으로 사용할 안정적인 PDFium 의미론적 스냅샷을 캡처합니다

각 커밋은 현재 상태를 캡처하고 활성 classic, hybrid, xref-stream, object-stream 객체를 해석한 다음 객체 세대와 정확한 본문 바이트를 비교합니다

이전 출력 뒤에는 변경되거나 새로 생긴 간접 객체만 기록되고, 이어서 필요한 최소 크기의 xref와 trailer 리비전이 기록됩니다

classic xref 소스는 classic xref 테이블로 이어지고 xref-stream 소스는 자기 색인 xref 스트림으로 이어집니다

변경된 것이 없으면 이전 출력이 바이트 단위로 그대로 반환되고 리비전은 추가되지 않으며 RevisionCount도 늘어나지 않습니다

파일 오버로드는 형제 임시 파일을 쓰고 대상을 원자적으로 교체하며, 쓰기나 교체가 실패하면 세션 상태를 복원합니다

Constraints

Example

var
  Info: TPdfIncrementalCommitInfo;
begin
  Pdf.BeginIncrementalSave;
  try
    Pdf.PageNumber := 1;
    Pdf.PageRotation := ro90;
    Pdf.CommitIncrementalSave('revision-1.pdf', Info);
    Pdf.PageRotation := ro180;
    Pdf.CommitIncrementalSave('revision-2.pdf', Info);
  finally
    Pdf.EndIncrementalSave;
  end;
end;

See Also

SaveAs, SaveAsObjectStream