/Info del trailerfunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium scrive prima una copia non incrementale del documento corrente in memoria, così la riscrittura parte da byte canonici
Il grafo degli oggetti viene poi analizzato e una camminata di raggiungibilità a livello di documento dal catalogo raccoglie ogni oggetto indiretto sopravvissuto, inclusi l'albero delle pagine, le risorse delle pagine, i font, le immagini, i Form XObject, AcroForm, l'albero di struttura, gli outline, gli alberi dei nomi, il contenuto opzionale, i metadati, gli output intent e i file associati
Gli oggetti lasciati irraggiungibili dagli aggiornamenti incrementali, dalle fusioni di pagine o dai salvataggi riparati vengono scartati e l'output è una singola revisione classica senza flussi di oggetti e senza flusso xref
I numeri e le generazioni degli oggetti vengono preservati, così ogni riferimento incrociato sopravvissuto resta valido senza rinumerazione; gli oggetti irraggiungibili diventano voci libere nella tabella xref classica ricostruita
Il trailer ricostruito trasporta /Root, /Info e /ID in avanti solo quando gli oggetti referenziati sopravvivono alla spazzatura
TPdfPruneReport riporta i conteggi di oggetti indiretti conservati e potati, le dimensioni in byte di sorgente e output e un messaggio di errore strutturatoAllowSignedDocument non sia esplicitamente abilitato perché una riscrittura completa invalida gli intervalli di byte delle firme esistenti
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);