/Info-Wörterbuch des Trailers erreichbar sind.function SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium schreibt zunächst eine nicht-inkrementelle Kopie des aktuellen In-Memory-Dokuments, damit die Neuschreibung von kanonischen Bytes ausgeht
Der Objektgraph wird dann geparst, und ein dokumentweiter Erreichbarkeits-Durchlauf vom Katalog sammelt jedes überlebende indirekte Objekt, einschließlich Seitenbaum, Seitenressourcen, Schriften, Bilder, Form-XObjects, AcroForm, Strukturbaum, Gliederungen, Namensbäumen, Optional Content, Metadaten, OutputIntents und zugehörigen Dateien
Objekte, die durch inkrementelle Aktualisierungen, Seitenzusammenführungen oder reparierte Speichervorgänge unerreichbar geworden sind, werden verworfen, und die Ausgabe ist eine einzelne klassische Revision ohne Objekt-Streams und ohne Querverweis-Stream
Objektnummern und Generationen bleiben erhalten, daher bleibt jeder überlebende Querverweis ohne Neunummerierung gültig; unerreichbare Objekte werden zu freien Einträgen in der neu aufgebauten klassischen Querverweistabelle
Der neu aufgebaute Trailer führt /Root, /Info und /ID nur fort, wenn die referenzierten Objekte den Durchlauf überlebt haben
TPdfPruneReport meldet die behaltenen und entfernten indirekten Objektanzahlen, die Quell- und Ausgabebytemengen und eine strukturierte FehlermeldungAllowSignedDocument nicht ausdrücklich aktiviert ist, weil eine vollständige Neuschreibung vorhandene Signatur-Bytebereiche ungültig macht
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);