PDFium Delphi Component Docs

CommitIncrementalSave Método

Componente: TPdf  ·  Unidade: PDFium
Anexa as edições feitas desde o último commit como uma nova revisão de PDF

Syntax

function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean;

StreamDestino do documento completo, incluindo a linha de base e toda revisão anexada até agora; nil dispara EPdfError
InfoO 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
ResultTrue quando a saída validada completa foi gravada

 

function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean;

FileNameArquivo de destino, substituído atomicamente por meio de um side file durável no mesmo diretório
InfoO 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
ResultTrue quando o side file validado substituiu o destino

Description

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

See Also

BeginIncrementalSave, EndIncrementalSave, IncrementalSaveActive, SaveAs