function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium כותב תחילה עותק לא מצטבר של המסמך הנוכחי בזיכרון, ואז המעטפת מבצעת הליכת השגה ברמת מסמך ומפילה כל אובייקט בלתי ניתן להשגה בדיוק כמו SaveAsReachable
גופנים, תמונות ו-form XObjects עוברים אז טביעת אצבע: כל מילון מועמד, תת-הגרף המלא שלו הניתן להשגה ומטען הזרם הגולמי שלו מגובבים רקורסיבית, כך שכפילויות מתמזגות רק כאשר כל תוכנם זהה
כל הפניה צולבת שהצביעה על כפילות שמוזגה נכתבת מחדש לנציג השורד, ומספרי אובייקטים ודורות נשארים יציבים כך שכל הפניה צולבת שורדת נותרת תקפה
הפלט הוא רוויזיה קלאסית יחידה ללא זרמי אובייקטים וללא זרם cross-reference, וה-trailer שנבנה מחדש נושא את /Root, /Info ו-/ID קדימה
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');