function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium schrijft eerst een niet-incrementele kopie van het huidige in-memory document, waarna de wrapper een documentbrede bereikbaarheidswandeling uitvoert en elk onbereikbaar object laat vallen, net als SaveAsReachable
Lettertypen, afbeeldingen en formulier-XObjects worden vervolgens gefingerprint: elk kandidaat-dictionary, zijn volledige bereikbare substroom en zijn ruwe streampayload worden recursief gehasht, zodat duplicaten alleen samenvallen wanneer hun volledige content identiek is
Elke kruisverwijzing die naar een samengevoegde duplicaat wees, wordt herschreven naar de overlevende representant, en objectnummers en generaties blijven stabiel zodat elke overlevende kruisverwijzing geldig blijft
De uitvoer is één klassieke revisie zonder object streams en zonder cross-reference stream, en de herbouwde trailer draagt /Root, /Info en /ID over
TPdfDedupReport rapporteert gehandhaafde en gesnoeide objectaantallen plus per categorie samengevoegde lettertype-, afbeeldings- en formulier-XObject-aantallen, met bron- en uitvoerbytegroottes en een gestructureerde foutmeldingAllowSignedDocument expliciet is ingeschakeld, omdat een volledige herschrijving bestaande handtekeningbytebereiken ongeldig maakt
Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');