function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
| Stream | Destino del documento completo, incluida la línea base y todas las revisiones anexadas hasta ahora; nil genera EPdfError |
| Info | TPdfIncrementalCommitInfo recibe conteos de objetos y bytes, offsets de xref previo y nuevo, conteo de revisiones, estado de cifrado y validación, y resultados de durabilidad del archivo |
| Result | True cuando la salida validada completa fue escrita |
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
| FileName | Archivo de destino, reemplazado atómicamente mediante un archivo lateral durable en el mismo directorio |
| Info | El mismo informe TPdfIncrementalCommitInfo que la sobrecarga de flujo, con Durable y ReplacedAtomically establecidos después de que esas etapas de archivo tengan éxito |
| Result | True cuando el archivo lateral validado reemplazó el destino |
Calcula las diferencias del documento activo contra el estado capturado en la última confirmación, o contra la línea base para la primera, y anexa los objetos modificados más una sección de referencias cruzadas nueva. Los bytes anteriores nunca se reescriben, de modo que cada revisión previa permanece idéntica byte a byte y recuperable
AppendedByteCount es el tamaño de la nueva revisión por sí sola, mientras que PreviousOutputByteCount y OutputByteCount delimitan el prefijo inmutable y el resultado completo. PreviousXrefOffset y OutputXrefOffset identifican la cadena de revisiones, y ChangedObjectCount informa cuántos objetos encontró el diff
Cada candidato pasa comprobaciones dispersas de límites de revisión, una reapertura independiente estricta, comprobaciones de conteo de páginas y del controlador de seguridad, y validación de PDF MAC cuando está presente. Encrypted y Validated informan estas propiedades
La sobrecarga de archivo escribe junto al destino, sincroniza el archivo auxiliar, lo cierra y lo reabre, repite la validación y después realiza el reemplazo atómico; Windows solicita un reemplazo con write-through; Unix comprueba que se pueda sincronizar el directorio antes del reemplazo y sincroniza el directorio padre después de renombrar
Una falla anterior al reemplazo deja intacto el destino previo y restaura la base de la sesión y el número de revisiones; si en Unix falla la sincronización del directorio después de un renombrado exitoso, la unidad interna FPdfPlatform lanza EPdfOutputCommitError: la salida ya fue reemplazada, Info.ReplacedAtomically=True y Info.Durable=False, y la sesión conserva la base confirmada para que una edición posterior no agregue datos a una salida obsoleta
Durable indica que se completaron las etapas de sincronización solicitadas por la plataforma; no certifica el hardware de almacenamiento ni el comportamiento del sistema de archivos tras un corte de energía; otras API de guardado que usan el mismo reemplazo atómico también pueden lanzar esta excepción de salida ya confirmada; el llamador debe distinguir esa etapa de las fallas que conservan la salida anterior
Llamar sin una sesión abierta genera EPdfError, así que BeginIncrementalSave debe ir primero