THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

ด้านบน  ก่อนหน้า  ถัดไป

แพ็คออบเจกต์ทางอ้อมที่มีสิทธิ์ลงในสตรีมคอนเทนเนอร์ PDF 1.5 /Type /ObjStm (ISO 32000-1 7.5.7) เพื่อลดขนาด PDF บนดิสก์

 

Delphi syntax:

property UseObjectStreams: Boolean;

 

C++ syntax:

__property bool UseObjectStreams;

 

คำอธิบาย

เมื่อ UseObjectStreams เป็น true (และ UseXRefStream เป็น true ด้วย) EndDoc จะแพ็คออบเจกต์ทางอ้อมที่มีสิทธิ์ทุกประเภท - พจนานุกรม, อาร์เรย์, ตัวเลข, ชื่อ, สตริง, บูลีน, null - ลงในสตรีมคอนเทนเนอร์ /Type /ObjStm หนึ่งรายการหรือมากกว่าตามข้อกำหนด ISO 32000-1 7.5.7 จากนั้นสตรีมการอ้างอิงไขว้จะอ้างอิงไปยังออบเจกต์ที่แพ็คไว้ผ่านรายการประเภท 2 (หมายเลขออบเจกต์ ObjStm โฮสต์ + ดัชนีรายการภายในสตรีมนั้น) ดังนั้นไบต์เฟรม N G obj ... endobj แต่ละตัว และรายการ xref แบบข้อความต่อแถวจะถูกกำจัดออกไป

 

จับคู่ตามธรรมชาติกับคุณสมบัติ UseXRefStream สำหรับไปป์ไลน์ตัวเขียน PDF 1.5+ ที่กะทัดรัดที่สุด ตัวแพ็ค ObjStm จะปล่อยให้ออบเจกต์สตรีม พจนานุกรมการเข้ารหัส และพจนานุกรม Catalog และ Info ที่ชี้โดย trailer ไม่ถูกบีบอัด เพื่อให้โปรแกรมแยกวิเคราะห์ PDF ขั้นต่ำยังสามารถค้นหาตำแหน่งรากของเอกสารและถอดรหัสเนื้อหาได้

 

ค่าเริ่มต้น: false (เลือกใช้เอง)

การตั้งค่า UseObjectStreams เป็น true จะถูกลดระดับลงเป็น false โดยอัตโนมัติหากปิดใช้งาน UseXRefStream (ตามข้อกำหนด รายการประเภท 2 ไม่สามารถแสดงในตาราง xref แบบข้อความได้) หรือเมื่อ Version อยู่ต่ำกว่า PDF 1.5

 

นอกจากนี้ยังถูกบังคับให้ปิดใช้งานภายใต้ PDF/A-1: ISO 19005-1 (PDF 1.4, clause 6.1.4) ห้ามมิให้ใช้สตรีมออบเจกต์ที่บีบอัดร่วมกับสตรีมการอ้างอิงไขว้ ดังนั้น EndDoc จะส่งตาราง xref แบบคลาสสิกทุกครั้งที่ PDFACompliance ระบุระดับส่วนที่ 1 ในขณะที่ PDF/A-2 และ PDF/A-3 (PDF 1.7) ยังอนุญาตให้ใช้งานได้

 

Code Example

HPDF := THotPDF.Create( nil );
try
  HPDF.FileName := 'c:\Output.pdf';
  HPDF.Version := pdf15;          // Object streams require PDF 1.5+
  HPDF.UseXRefStream := true;     // ObjStm references need a /Type /XRef stream
  HPDF.UseObjectStreams := true;  // Pack indirect objects into /Type /ObjStm
  HPDF.Compression := cmFlateDecode;
  HPDF.BeginDoc;
  HPDF.CurrentPage.TextOut( 100, 100, 0, 'Compact PDF 1.5 output' );
  HPDF.EndDoc;
finally
  HPDF.Free;
end;

 

การลดขนาด

สำหรับเอกสารที่ประกอบด้วยพจนานุกรมทางอ้อมขนาดเล็กเป็นส่วนใหญ่ (เอกสารหลายหน้า, คำอธิบายประกอบ, วิดเจ็ต AcroForm, องค์ประกอบของแผนผังโครงสร้าง, เลเยอร์เนื้อหาเสริม) การประหยัดพื้นที่โดยทั่วไปจะอยู่ที่ 20-40% ของขนาดไฟล์หลังการบีบอัดแบบ FlateDecode ผลการทดสอบเบื้องต้นแบบกราฟิกอย่างเดียวจำนวน 30 หน้าลดขนาดลงจาก 14502 ไบต์เหลือ 8488 ไบต์ (-41.5%)

 

ดูเพิ่มเติม

UseXRefStream, Compression, Version, การสนับสนุนตัวกรอง PDF