function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;
| Stream | Destino do documento completo, incluindo a linha de base e toda revisão anexada até agora; nil dispara EPdfError |
| Info | O TPdfIncrementalCommitInfo recebe contagens de objetos e de bytes, offsets de xref anterior e novo, contagem de revisões, estado de criptografia e de validação e resultados de durabilidade do arquivo |
| Result | True quando a saída validada completa foi gravada |
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;
| FileName | Arquivo de destino, substituído atomicamente por meio de um side file durável no mesmo diretório |
| Info | O mesmo relatório TPdfIncrementalCommitInfo da sobrecarga com stream, com Durable e ReplacedAtomically definidos depois que esses estágios de arquivo são concluídos com sucesso |
| Result | True quando o side file validado substituiu o destino |
Compara o documento vivo com o estado capturado no último commit, ou com a linha de base no primeiro deles, e anexa os objetos alterados mais uma seção de referência cruzada nova. Os bytes anteriores nunca são regravados, de modo que cada revisão anterior permanece idêntica byte a byte e recuperável
AppendedByteCount é o tamanho apenas da nova revisão, enquanto PreviousOutputByteCount e OutputByteCount delimitam o prefixo imutável e o resultado completo. PreviousXrefOffset e OutputXrefOffset identificam a cadeia de revisões, e ChangedObjectCount relata quantos objetos o diff encontrou
Cada candidato passa por verificações esparsas de limites de revisão, uma reabertura independente estrita, verificações de contagem de páginas e do security handler e validação de PDF MAC quando presente. Encrypted e Validated relatam essas propriedades
A sobrecarga com arquivo grava ao lado do alvo, sincroniza o side file, fecha e reabre o arquivo, repete a validação e então confirma uma substituição atômica. O Windows solicita substituição com write-through; o Unix verifica o suporte a flush de diretório antes da substituição e libera o diretório pai após a renomeação
Uma falha antes da substituição deixa o alvo anterior intocado e restaura a linha de base da sessão e a contagem de revisões. Uma falha de flush de diretório no Unix após uma renomeação bem-sucedida dispara EPdfOutputCommitError a partir da unidade interna FPdfPlatform: a saída já foi substituída, Info.ReplacedAtomically=True e Info.Durable=False, e a sessão retém a linha de base confirmada, de modo que uma edição posterior não possa anexar a uma saída obsoleta
Durable relata a conclusão bem-sucedida das etapas de flush solicitadas pela plataforma. Ele não certifica o hardware de armazenamento nem o comportamento do sistema de arquivos após uma perda de energia. Outras APIs de gravação de arquivo que usam a mesma substituição atômica também podem disparar essa exceção de saída confirmada após a substituição; quem chama deve distinguir essa etapa das falhas que preservam a saída anterior
Chamar sem uma sessão aberta dispara EPdfError, de modo que BeginIncrementalSave precisa vir primeiro