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 | Permite explícitamente una sesión sobre un documento firmado; el valor predeterminado la rechaza |
| Stream | TStream que recibe el PDF acumulado completo después de esta confirmación |
| FileName | Ruta de salida reemplazada solo después de que un archivo temporal hermano tenga éxito |
| Info | Estadísticas por confirmación devueltas después de que la escritura del destino tenga éxito |
| ChangedObjectCount | Number of changed or new indirect objects appended by this commit |
| AppendedByteCount | Bytes appended after the exact previous-output prefix |
| OutputByteCount | Total bytes in the complete output returned by this commit |
| RevisionCount | Number of non-empty revisions committed in the current session |
BeginIncrementalSave captura una instantánea semántica estable de PDFium como línea base de comparación y como primera salida completa
Cada confirmación 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 del objeto y los bytes exactos del cuerpo
Solo los objetos indirectos cambiados o nuevos se escriben después de la salida anterior, seguidos de la menor revisión de xref y trailer requerida
Un origen de xref clásico continúa con tablas xref clásicas, mientras que un origen de flujo xref continúa con flujos xref autoindexados
Si nada cambió, la salida anterior se devuelve byte a byte, no se añade ninguna revisión y RevisionCount no avanza
La sobrecarga de archivo escribe un archivo temporal hermano, reemplaza el destino de forma atómica y restaura el estado de la sesión si la escritura o el reemplazo fallan
AllowSignedDocument is True; explicit permission does not validate DocMDP or FieldMDP policyEPdfErrorCompressed property so object comparison remains stable
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;