function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium kirjoittaa ensin ei-inkrementaalisen kopion nykyisestä muistissa olevasta dokumentista, minkä jälkeen kääre suorittaa dokumentinlaajuisen tavoittavuuskävelyn ja pudottaa jokaisen tavoittamattoman objektin täsmälleen kuten SaveAsReachable
Fontit, kuvat ja lomake-XObjectit sormenjälkistetään sitten: jokainen ehdokassanakirja, sen koko tavoittava aligraafi ja sen raaka virtapaketti tiivistetään rekursiivisesti, jotta kopiot yhdistyvät vain, kun niiden koko sisältö on identtinen
Jokainen ristiviittaus, joka osoitti yhdistettyyn pois jätettyyn kopioon, kirjoitetaan uudelleen selviytyjään, ja objektinumerot ja sukupolvet pysyvät vakaina, jotta jokainen selviytyvä ristiviittaus pysyy kelvollisena
Ulostulo on yksittäinen klassinen revisio ilman objektivirtoja ja ilman ristiviittausvirtaa, ja uudelleenrakennettu traileri kantaa /Root-, /Info- ja /ID-arvot eteenpäin
TPdfDedupReport reports kept and pruned object counts plus per-category merged font, image, and form XObject counts, with source and output byte sizes and a structured failure messageAllowSignedDocument is explicitly enabled because a full rewrite invalidates existing signature byte ranges
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');