PDFium Delphi Component Docs

เมธอด SaveAsDeduplicated

Component: TPdf  ·  Unit: PDFium
เขียนเอกสารใหม่เป็น revision เดียวที่สะอาด โดยกวาดออบเจ็กต์ที่เข้าถึงไม่ได้ออกก่อน จากนั้นจึงรวมฟอนต์ รูปภาพ และ form XObject ที่เข้ากันได้เข้าเป็นตัวแทนร่วมกันหนึ่งตัว

Syntax

function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean;

Description

PDFium เขียนสำเนาแบบไม่ใช่ incremental ของเอกสารในหน่วยความจำปัจจุบันก่อน จากนั้น wrapper จะเดินตรวจการเข้าถึงได้ทั่วทั้งเอกสารและทิ้งออบเจ็กต์ที่เข้าถึงไม่ได้ทุกตัว ในลักษณะเดียวกับ SaveAsReachable

จากนั้นฟอนต์ รูปภาพ และ form XObject จะถูกสร้าง fingerprint โดย hash dictionary ผู้สมัครแต่ละตัว พร้อมด้วย subgraph ที่เข้าถึงได้ทั้งหมด และ raw stream payload ของมันแบบ recursive ดังนั้นรายการที่ซ้ำกันจะถูกรวมเฉพาะเมื่อเนื้อหาทั้งหมดของทั้งสองตรงกันทุกประการเท่านั้น

cross-reference ทุกรายการที่เคยชี้ไปยังรายการซ้ำที่ถูกรวมไป จะถูกเขียนใหม่ให้ชี้ไปยังตัวแทนที่เหลืออยู่ และหมายเลขออบเจ็กต์พร้อม generation ยังคงเสถียร ทำให้ cross-reference ทุกรายการที่เหลืออยู่ยังคงใช้ได้

ผลลัพธ์คือ revision แบบ classic เดียวที่ไม่มี object stream และไม่มี cross-reference stream โดย trailer ที่สร้างใหม่จะส่ง /Root, /Info และ /ID ต่อไป

Policies and limits

Example

Pdf.SaveAsDeduplicated('deduplicated.pdf', Report);
WriteLn('merged ', Report.MergedImageCount, ' images');

See Also

SaveAsReachable, SaveAs, SaveAsNormalizedContent