/Info do trailerfunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
O PDFium escreve primeiro uma cópia não incremental do documento atual em memória, para que a reescrita comece a partir de bytes canónicos
O grafo de objetos é depois analisado e uma travessia de alcançabilidade a todo o documento a partir do catálogo recolhe todos os objetos indiretos sobreviventes, incluindo a árvore de páginas, os recursos de página, fontes, imagens, form XObjects, AcroForm, a estrutura em árvore, os outlines, os name trees, o optional content, os metadados, os output intents e os ficheiros associados
Os objetos que atualizações incrementais, fusões de páginas ou gravações reparadas deixaram inalcançáveis são descartados, e a saída é uma única revisão clássica sem object streams e sem cross-reference stream
Os números e gerações de objeto são preservados, pelo que cada cross-reference sobrevivente continua válida sem renumeração; os objetos inalcançáveis tornam-se entradas livres na tabela de cross-reference clássica reconstruída
O trailer reconstruído transporta /Root, /Info e /ID apenas quando os objetos referenciados sobreviveram à varredura
TPdfPruneReport reporta as contagens de objetos indiretos mantidos e podados, os tamanhos em bytes da origem e da saída e uma mensagem de falha estruturadaAllowSignedDocument estiver explicitamente ativado, porque uma reescrita completa invalida os intervalos de bytes das assinaturas existentes
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);