PDFium Component Docs

Sesión de guardado incremental

Componente: TPdf  ·  Unidad: PDFium
Agrega solo los objetos indirectos modificados o nuevos conservando cada byte de la salida anterior

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;

AllowSignedDocumentPermite explícitamente una sesión en un documento firmado; el comportamiento predeterminado la rechaza
StreamTStream que recibe el PDF completo acumulado después de este commit
FileNameRuta de salida que se reemplaza solo después de que un archivo temporal contiguo tiene éxito
InfoEstadísticas por commit devueltas después de que la escritura en el destino tiene éxito

Commit Information

ChangedObjectCountCantidad de objetos indirectos modificados o nuevos agregados por este commit
AppendedByteCountBytes agregados después del prefijo exacto de la salida anterior
OutputByteCountBytes totales en la salida completa devuelta por este commit
RevisionCountCantidad de revisiones no vacías confirmadas en la sesión actual

Description

BeginIncrementalSave captura una instantánea semántica estable de PDFium que sirve tanto de línea base de comparación como de primera salida completa

Cada commit captura el estado actual, resuelve los objetos activos clásicos, híbridos, de flujo xref y de flujo de objetos, y luego compara la generación de objetos y los bytes exactos del cuerpo

Solo los objetos indirectos modificados o nuevos se escriben después de la salida anterior, seguidos por la revisión mínima necesaria de xref y trailer

Un origen con xref clásico continúa con tablas xref clásicas, mientras que un origen con flujo xref continúa con flujos xref autoindexados

Si nada cambió, se devuelve la salida anterior byte por byte, no se agrega ninguna revisión y RevisionCount no avanza

La sobrecarga de archivo escribe un archivo temporal contiguo, reemplaza el destino de forma atómica y restaura el estado de la sesión si la escritura o el reemplazo falla

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