function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium prvo upisuje neinkrementalnu kopiju trenutnog dokumenta u memoriji, zatim omotač izvodi obilazak dostižnosti kroz ceo dokument i odbacuje svaki nedostižni objekat, tačno kao SaveAsReachable
Fontovi, slike i formularni XObject-i se zatim otiskuju: svaki rečnik kandidata, njegov ceo dostižni podgraf i njegov sirovi tok se heširaju rekurzivno, pa se duplikati spajaju samo kada je njihov ceo sadržaj identičan
Svaka unakrsna referenca koja je pokazivala na spojeni duplikat se prepisuje na preživelog predstavnika, a brojevi objekata i generacije ostaju stabilni, tako da svaka preživela unakrsna referenca ostaje važeća
Izlaz je jedna klasična revizija bez tokova objekata i bez toka unakrsnih referenci, a ponovo izgrađeni trejler prenosi /Root, /Info i /ID
TPdfDedupReport izveštava brojeve zadržanih i orezanih objekata, plus spojene brojeve po kategoriji za fontove, slike i formularne XObject-e, sa veličinama izvora i izlaza u bajtovima i struktuiranom porukom o neuspehuAllowSignedDocument nije izričito omogućen, jer potpuni prepis poništava postojeće opsege bajtova potpisa
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');