function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium najprej zapiše neinkrementalno kopijo trenutnega dokumenta v pomnilniku, nato ovijalec izvede sprehod po dosegljivosti po celem dokumentu in izvrže vsak nedosegljivi predmet, natanko kot SaveAsReachable
Pisave, slike in obrazci XObjects se nato prstno odkrijejo: vsak kandidatni slovar, njegov celoten dosegljivi podgraf in njegov surov tokovni tovor se rekurzivno razšifrirajo, zato se dvojniki združijo le, ko je njihova celotna vsebina identična
Vsaka navzkrižna referenca, ki je kazala na združenega dvojnika, se prepiše na preživelega predstavnika, številke predmetov in generacije ostanejo stabilne, zato vsaka preživela navzkrižna referenca ostane veljavna
Izhod je ena sama klasična revizija brez tokov predmetov in brez navzkrižnega referenčnega toka, obnovljeni vleček pa prenaša /Root, /Info in /ID naprej
TPdfDedupReport poroča o številih ohranjenih in odstranjenih predmetov ter o združenih pisavah, slikah in obrazcih XObjects po kategorijah, z velikostmi vira in izhoda v bajtih ter strukturiranim sporočilom o napakiAllowSignedDocument izrecno omogočen, ker poln prepis razveljavi obstoječe obsege bajtov podpisov
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');