PDFium Delphi Component Docs

เมธอด GeneratePagedLayout

Component: TPdf  ·  Units: PDFium, FPdfLayout

Syntax

function GeneratePagedLayout(Layout: TPdfLayoutDocument; PagedPlan: TPdfLayoutPagedPlan; out Plan: TPdfLayoutPlan; AllowSignedDocument: Boolean = False): Boolean;

Description

วัดและแบ่งหน้า layout พร้อมกับ serialise command แต่ละตัวลง storage แบบ seek ได้ที่ PagedPlan เป็นเจ้าของหรืออ้างอิงอยู่

หลังวัดเสร็จ จะ materialise อาร์เรย์ command ของหน้าหนึ่งหน้าต่อครั้ง ส่งหน้านั้นออกผ่าน native PDFium page-object API ชุดเดียวกับ GenerateLayout flush ทิ้ง คืนอาร์เรย์ local แล้วไปหน้าถัดไป

Storage and cache

ใช้ TFileStream, TMemoryStream หรือ TPdfRandomAccessStore แบบเฉพาะของตัวเอง stream ต้องรองรับ seek, read, write, resize และการใช้แบบเดียวตลอดอายุของ paged plan

MaxCommandCount, MaxStorageBytes, MaxPageCommands และ MaxSourceCount ปฏิเสธ plan ที่ใหญ่เกินไป ส่วน MaxCachedPages จำกัด LRU cache ภายในและตั้งเป็นศูนย์ได้

CommandCount, StorageByteCount, ตัวนับของ cache และค่า occupancy สูงสุด เปิดเผยพฤติกรรมที่วัดได้

Result

Plan.Commands ถูกออกแบบให้ว่าง ส่วนการตั้งค่าหน้า จำนวนหน้า semantic element การนับเนื้อหา ค่าที่วัดได้ และผลรวม page reference แบบเสถียรยังเรียกดูได้

PagedPlan.MaterializePage สร้างหน้าที่สมบูรณ์กลับมาทีหลังได้ รวมถึงเนื้อหาหลักบวกส่วน header และ footer ที่เขียนแยกไว้

Limitations and safety

เมธอดนี้สร้าง layout แบบ untagged หากต้องการ command plan ในหน่วยความจำที่สมบูรณ์และการ post-process structure tree ให้ใช้ GenerateTaggedLayout

PDFium เก็บเอกสารที่สร้างและ native page ของมันไว้จนกว่าจะ save หรือ close จึงเป็นการจำกัดการ materialise command ระดับสูงเท่านั้น ไม่ใช่หน่วยความจำเอกสารฝั่ง PDFium

source PDF หรือ TPdfLayoutCachedNode ใด ๆ ที่ถูกอ้างอิงต้องมีอายุยาวกว่าการสร้างและการ materialise ทีหลัง และปลายทางที่มีลายเซ็นต้องได้รับอนุญาตอย่างชัดเจน

หากการวัดหรือการส่งออกล้มเหลว storage ของ command ที่ยังไม่สมบูรณ์จะถูกรีเซ็ต และหน้าที่ call นี้เพิ่มเข้าไปจะถูก rollback ทั้งหมด

See Also

GenerateLayout, GenerateTaggedLayout, FPdfLayout, Random access working storage