function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium najprv zapíše neinkrementálnu kópiu aktuálneho dokumentu v pamäti, potom obálka vykoná prechod dosiahnuteľnosti celým dokumentom a zahodí každý nedosiahnuteľný objekt presne ako SaveAsReachable
Následne sa písma, obrázky a formulárové XObjecty opatria odtlačkom: každý kandidátny slovník, jeho celý dosiahnuteľný podgraf a jeho surová obsahová časť prúdu sa rekurzívne hašujú, takže duplicity sa zlúčia len vtedy, keď je ich celý obsah totožný
Každá krížová referencia, ktorá ukazovala na zlúčenú duplicitu, sa prepíše na preživšieho zástupcu a čísla objektov a generácie zostávajú stabilné, takže každá preživšia krížová referencia zostáva platná
Výstupom je jediná klasická revízia bez objektových prúdov a bez prúdu krížových referencií a znovu zostavený trailer prenáša /Root, /Info a /ID
TPdfDedupReport hlási počty zachovaných a odstránených objektov plus počty zlúčených priesem, obrázkov a formulárových XObjectov podľa kategórií, s veľkosťami zdroja a výstupu v bajtoch a štruktúrovanou správou o zlyhaníAllowSignedDocument, pretože úplný prepis zneplatní existujúce bajtové rozsahy podpisov
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');