Esta versão localizada trata de Object Streams and Incremental Updates in Delphi with HotPDF usando o artigo em inglês atualizado como referência técnica para equipes Delphi, PDF e software documental
A página transforma a base atualizada em pontos de controle práticos para projeto, implementação e validação
Conteúdo sincronizado a partir da base em inglês
O artigo base foi ampliado com contexto prático, decisões técnicas e exemplos concretos, então esta página deve ser lida como guia de trabalho, não como resumo curto
Pontos importantes da versão atualizada:
- Use primeiro arquivos de entrada pequenos e reproduzíveis
- Mantenha intactos nomes de produto, API, arquivos e valores literais
- Salve a saída do validador e as versões junto com o arquivo de teste gerado
Decisões práticas de implementação
Comece pelo tipo de arquivo, pelo resultado esperado e pelo estado de erro que o usuário precisa ver. Depois conecte cada chamada API a um resultado verificável para que validação, logs e suporte possam reproduzir o caso do cliente
- Use primeiro arquivos de entrada pequenos e reproduzíveis
- Mantenha intactos nomes de produto, API, arquivos e valores literais
- Salve a saída do validador e as versões junto com o arquivo de teste gerado
Código e pontos API
Os exemplos de código são preservados sem alteração para comparação direta com projetos Delphi, C++Builder e Lazarus/FPC
var
Pdf: THotPDF;
begin
Pdf := THotPDF.Create(nil);
try
Pdf.FileName := 'catalog-2026.pdf';
Pdf.UseXRefStream := True; // binary xref, prerequisite for ObjStm
Pdf.UseObjectStreams := True; // pack objects into /Type /ObjStm
Pdf.BeginDoc;
Pdf.CurrentPage.SetFont('Arial', [], 11);
Pdf.CurrentPage.TextOut(50, 760, 0, 'Compressed structure demo');
Pdf.EndDoc; // emits XRefStm + ObjStm containers
finally
Pdf.Free;
end;
end;Pdf.BeginIncrementalUpdate('contract-signed.pdf');
Pdf.AddPage;
Pdf.CurrentPage.SetFont('Arial', [], 10);
Pdf.CurrentPage.TextOut(50, 760, 0, 'Addendum recorded 2026-06-11');
Pdf.SaveIncrementalUpdate('contract-updated.pdf'); // appends the delta onlyPageCount := Pdf.LoadFromFile('base.pdf');
Pdf.InsertPagesFromDocument(OtherDoc, '1-3', 5); // pages 1-3 after page 5
Pdf.MovePage(2, 5);
Pdf.SaveLoadedDocument('modified.pdf');Verificação antes da publicação
Revise o arquivo de saída com as mesmas ferramentas que o cliente ou o arquivo documental usará. Registre versão do componente, dados de teste, versão do validador e resultado observado
Exemplos de código adicionais
Pdf.LoadFromFile('stamped.pdf');
Pdf.SaveLoadedDocument('compacted.pdf');