function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
| Stream | Destino del documento completo, incluida la línea base y cada revisión anexada hasta el momento; nil lanza EPdfError |
| Info | TPdfIncrementalCommitInfo recibe los conteos de objetos y bytes, los desplazamientos xref previo y nuevo, el conteo de revisiones, el estado de cifrado y validación, y los resultados de durabilidad del archivo |
| Result | True cuando se escribió la salida completa validada |
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
| FileName | Archivo de destino, reemplazado atómicamente mediante un archivo lateral duradero 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 entre el documento en vivo y el estado capturado en la última confirmación, o contra la línea base para la primera, y anexa los objetos modificados junto con una sección de referencias cruzadas nueva. Los bytes anteriores nunca se reescriben, por lo que cada revisión previa permanece idéntica a nivel de bytes y recuperable
AppendedByteCount es el tamaño de la nueva revisión 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ó la comparación
Cada candidato pasa comprobaciones dispersas de límites de revisión, una reapertura independiente estricta, comprobaciones del conteo de páginas y del manejador de seguridad, y validación de PDF MAC cuando está presente. Encrypted y Validated informan estas propiedades
La sobrecarga de fichero escribe junto al destino, vacía los búferes del fichero auxiliar, lo cierra y vuelve a abrir, repite la validación y después confirma una sustitución atómica. Windows solicita una sustitución con escritura inmediata; Unix comprueba el soporte de vaciado del directorio antes de sustituir y vacía el directorio padre después del renombrado
Un fallo anterior a la sustitución deja intacto el destino previo y restaura la base de la sesión y el número de revisiones. Si en Unix falla el vaciado del directorio tras un renombrado correcto, la unidad interna FPdfPlatform lanza EPdfOutputCommitError: la salida ya está sustituida, Info.ReplacedAtomically=True y Info.Durable=False, y la sesión conserva la base confirmada para que una edición posterior no añada datos a una salida obsoleta
Durable indica que finalizaron correctamente las etapas de vaciado solicitadas por la plataforma. No certifica el hardware de almacenamiento ni el comportamiento del sistema de ficheros ante una pérdida de alimentación. Otras API de guardado que usan la misma sustitución atómica también pueden lanzar esta excepción de salida confirmada tras la sustitución; el llamador debe distinguir esa etapa de los fallos que conservan la salida anterior
Llamar sin una sesión abierta lanza EPdfError, por lo que BeginIncrementalSave tiene que ir primero