function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium scrie mai întâi o copie neincrementală a documentului curent din memorie, apoi wrapperul efectuează o parcurgere de accesibilitate pe tot documentul și elimină fiecare obiect inaccesibil, exact ca SaveAsReachable
Fonturile, imaginile și form XObject-urile sunt apoi amprentate: fiecare dicționar candidat, subgraful său complet accesibil și payload-ul brut al fluxului său sunt hash-uite recursiv, astfel încât duplicatele fuzionează doar când întregul lor conținut este identic
Fiecare referință încrucișată care indica un duplicat comasat este rescrisă către reprezentantul supraviețuitor, iar numerele și generațiile obiectelor rămân stabile, deci fiecare referință încrucișată supraviețuitoare rămâne validă
Ieșirea este o singură revizuire clasică, fără object streams și fără flux de referințe încrucișate, iar trailerul reconstruit propagă /Root, /Info și /ID
TPdfDedupReport raportează numărătorile de obiecte păstrate și eliminate, plus numărătorile de fonturi, imagini și form XObject-uri comasate pe categorie, împreună cu dimensiunile în octeți ale sursei și ieșirii și un mesaj de eșec structuratAllowSignedDocument nu este activat explicit, deoarece o rescriere completă invalidează intervalele de octeți ale semnăturilor existente
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');