/Info ของ trailerfunction SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean;
PDFium เขียนสำเนาแบบไม่ใช่ incremental ของเอกสารในหน่วยความจำปัจจุบันก่อน เพื่อให้การเขียนใหม่เริ่มจากไบต์แบบ canonical
จากนั้น object graph จะถูกแยกวิเคราะห์ และการเดินตรวจการเข้าถึงได้ทั่วทั้งเอกสารจาก catalog จะรวบรวมออบเจ็กต์ indirect ทุกตัวที่เหลืออยู่ รวมถึง page tree, resource ของหน้า, ฟอนต์, รูปภาพ, form XObject, AcroForm, structure tree, outline, name tree, optional content, metadata, output intent และไฟล์ที่เกี่ยวข้อง
ออบเจ็กต์ที่กลายเป็นไม่ถูกอ้างถึงจากการอัปเดตแบบ incremental การผสานหน้า หรือการบันทึกแบบซ่อมแซม จะถูกทิ้งไป และผลลัพธ์คือ revision แบบ classic เดียวที่ไม่มี object stream และไม่มี cross-reference stream
หมายเลขออบเจ็กต์และ generation ถูกคงไว้ ดังนั้น cross-reference ทุกรายการที่เหลืออยู่ยังคงใช้ได้โดยไม่ต้องจัดหมายเลขใหม่ ส่วนออบเจ็กต์ที่เข้าถึงไม่ได้จะกลายเป็นรายการ free ในตาราง cross-reference แบบ classic ที่สร้างใหม่
trailer ที่สร้างใหม่จะส่ง /Root, /Info และ /ID ต่อไปเฉพาะเมื่อออบเจ็กต์ที่ถูกอ้างถึงยังรอดจากการกวาดครั้งนี้
TPdfPruneReport รายงานจำนวนออบเจ็กต์ indirect ที่เก็บไว้และที่ตัดทิ้ง ขนาดไบต์ของต้นทางและผลลัพธ์ และข้อความความล้มเหลวแบบมีโครงสร้างAllowSignedDocument อย่างชัดแจ้ง เนื่องจากการเขียนใหม่ทั้งเอกสารจะทำให้ช่วงไบต์ของลายเซ็นเดิมใช้ไม่ได้
Pdf.SaveAsReachable('pruned.pdf', Report);
WriteLn('Kept ', Report.KeptObjectCount, ' pruned ', Report.PrunedObjectCount);