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 en un documento firmado; el comportamiento predeterminado la rechaza |
| Stream | TStream que recibe el PDF completo acumulado después de este commit |
| FileName | Ruta de salida que se reemplaza solo después de que un archivo temporal contiguo tiene éxito |
| Info | Estadísticas por commit devueltas después de que la escritura en el destino tiene éxito |
| ChangedObjectCount | Cantidad de objetos indirectos modificados o nuevos agregados por este commit |
| AppendedByteCount | Bytes agregados después del prefijo exacto de la salida anterior |
| OutputByteCount | Bytes totales en la salida completa devuelta por este commit |
| RevisionCount | Cantidad de revisiones no vacías confirmadas en la sesión actual |
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
AllowSignedDocument sea True; el permiso explícito no valida la política DocMDP ni FieldMDPEPdfErrorCompressed, de modo que la comparación de objetos permanece estable
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;