function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium pertama-tama menulis salinan non-inkremental dari dokumen dalam memori saat ini, lalu wrapper melakukan penelusuran keterjangkauan seluruh dokumen dan membuang setiap objek tak terjangkau persis seperti SaveAsReachable
Font, gambar, dan Form XObject lalu diberi sidik jari: setiap kamus kandidat, subgraf lengkapnya yang terjangkau, dan payload stream mentahnya dihash secara rekursif, sehingga duplikat bergabung hanya ketika seluruh kontennya identik
Setiap referensi silang yang menunjuk duplikat yang tergabung ditulis ulang ke wakil yang bertahan, dan nomor objek serta generasi tetap stabil sehingga setiap referensi silang yang bertahan tetap valid
Output adalah revisi klasik tunggal tanpa object stream dan tanpa stream referensi silang, dan trailer yang dibangun ulang membawa /Root, /Info, dan /ID maju
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');