/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 primeiro grava uma cópia não incremental do documento atual em memória, de modo que a regravação comece a partir de bytes canônicos
O grafo de objetos é então analisado e uma varredura de alcançabilidade em todo o documento a partir do catálogo coleta cada objeto indireto sobrevivente, incluindo a árvore de páginas, os recursos de página, fontes, imagens, form XObjects, AcroForm, árvore de estrutura, outlines, name trees, conteúdo opcional, metadados, output intents e arquivos associados
Objetos deixados inalcançáveis por atualizações incrementais, mesclagens de páginas ou salvamentos reparados 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, portanto toda cross-reference sobrevivente continua válida sem renumeração; objetos inalcançáveis tornam-se entradas livres na tabela de cross-reference clássica reconstruída
O trailer reconstruído carrega /Root, /Info e /ID para frente somente quando os objetos referenciados sobreviveram à varredura
TPdfPruneReport relata as contagens de objetos indiretos mantidos e podados, os tamanhos em bytes de origem e saída e uma mensagem estruturada de falhaAllowSignedDocument seja habilitado explicitamente, porque uma regravação completa invalida os intervalos de bytes das assinaturas existentes
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);