/Info-sanakirjastafunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium kirjoittaa ensin ei-inkrementaalisen kopion nykyisestä muistissa olevasta dokumentista, jotta uudelleenkirjoitus alkaa kanonisista tavuista
Objektigraafi jäsennetään sitten, ja dokumentinlaajuinen tavoittavuuskävely luettelosta kerää jokaisen selviytyvän epäsuoran objektin, mukaan lukien sivupuun, sivuresurssit, fontit, kuvat, lomake-XObjectit, AcroForm-rakenteen, rakennepuun, sisällysluettelot, nimipuut, valinnaissisällön, metatiedon, output intentit ja liitetyt tiedostot
Inkrementaalisten päivitysten, sivuyhdistysten tai korjattujen tallennusten jättämät tavoittamattomat objektit pudotetaan, ja ulostulo on yksittäinen klassinen revisio ilman objektivirtoja ja ilman ristiviittausvirtaa
Objektinumerot ja sukupolvet säilytetään, joten jokainen selviytyvä ristiviittaus pysyy kelvollisena ilman uudelleennumerointia; tavoittamattomista objekteista tulee vapaita merkintöjä uudelleenrakennettuun klassiseen ristiviittaustaulukkoon
Uudelleenrakennettu traileri kantaa /Root-, /Info- ja /ID-arvot eteenpäin vain, kun viitatut objektit selviytyivät pyyhkäisystä
TPdfPruneReport reports the kept and pruned indirect object counts, the source and output byte sizes, and a structured failure messageAllowSignedDocument is explicitly enabled because a full rewrite invalidates existing signature byte ranges
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);