function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium skriver först en icke-inkrementell kopia av det aktuella dokumentet i minnet, därefter gör wrappern en nåbarhetsgenomgång av hela dokumentet och kastar varje onåbart objekt, precis som SaveAsReachable
Teckensnitt, bilder och form-XObjects fingeravtryckas sedan: varje kandidatordbok, dess fullständiga nåbara delgraf och dess råa strömpayload hashas rekursivt, så att dubbletter slås samman endast när deras hela innehåll är identiskt
Varje korsreferens som pekade på en bortsammanlagd dubblett skrivs om till den överlevande representanten, och objektnummer och generationer förblir stabila så att varje överlevande korsreferens förblir giltig
Utmatningen är en enda klassisk revision utan objektströmmar och utan korsreferensström, och den ombyggda trailern för /Root, /Info och /ID vidare
TPdfDedupReport rapporterar antal behållna och bortrensade objekt samt per kategori sammanslagna teckensnitt, bilder och form-XObjects, med käll- och utmatningsbytestorlekar och ett strukturerat felmeddelandeAllowSignedDocument uttryckligen aktiveras, eftersom en fullständig omskrivning ogiltigförklarar befintliga signaturbyteintervall
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');