THotPDF.UseXRefStream Property

 

THotPDF.UseXRefStream

THotPDF

 

الأعلى  السابق  التالي

يُصدر تدفق cross-reference من نوع PDF 1.5 /Type /XRef (ISO 32000-1 7.5.8) بدلًا من التسلسل النصي xref ... trailer. حمولة الحاوية مضغوطة بـ Flate مع تنبؤ PNG Up (/DecodeParms /Predictor 12)، وتتكيف عروض الحقول في /W مع نطاق الإزاحات الفعلي (تتوسع بعد 4 GiB بدل الاقتطاع)، وتنكمش فراغات قائمة free-list إلى أقسام /Index فرعية حتى لا يكلف كل رقم كائن متفرق صفًا كاملًا

 

Delphi syntax:

property UseXRefStream: Boolean;

 

C++ syntax:

__property bool UseXRefStream;

 

الوصف

/Type /XRef ككائن تدفق غير مباشر بدلًا من تسلسل xref النصي القديم + trailer + startxref. تستخدم المداخل /W [1 4 2]: حقل نوع ببايت واحد، وإزاحة بأربعة بايتات (أو رقم الكائن المضيف لكائن مضغوط)، وجيل ببايتين (أو فهرس الكائن المضغوط). ويُضغط الجدول كله بأسلوب FlateDecode، ما يقلص عبء xref عادة بمقدار 4 إلى 10 أضعاف في المستندات الكبيرة.

 

تُعد تدفقات XRef شرطًا لازمًا لميزة UseObjectStreams: فالتدفق الثنائي لـ xref وحده يستطيع ترميز مداخل النوع 2 للكائنات المضغوطة التي تشير إلى حاويات /Type /ObjStm. وتعطيل UseXRefStream يعطّل UseObjectStreams تلقائيًا عند الحفظ.

 

القيمة الافتراضية: false (اختيارية بالتمكين - تحافظ على جدول xref النصي للأدوات التي تُثبّت xrefعندما يكون UseXRefStream true، يكتب EndDoc كائن stream غير مباشر واحدًا من نوع /Type /XRef بدل جدول xref النصي القديم مع trailer وstartxref. تستخدم entries /W [1 4 2] ويضغط الجدول كله بـ FlateDecode، مما يخفض overhead xref عادة 4-10 مرات في المستندات الكبيرة

 

تعد XRef streams شرطًا لازمًا لميزة UseObjectStreams: وحده xref stream الثنائي يستطيع ترميز type-2 compressed-object entries التي تشير إلى حاويات /Type /ObjStm. إيقاف UseXRefStream يعطل UseObjectStreams تلقائيًا وقت الحفظ

 'B' or 'A'ضبط UseXRefStream على true في مستند Version فيه أقل من PDF 1.5 يتم تجاهله بصمت وقت الحفظ ويصدر xref النصي بدلًا من ذلك

 

Code Example

HPDF := THotPDF.Create( nil );
try
  HPDF.FileName := 'c:\Output.pdf';
  HPDF.Version := pdf15;          // Required for XRef streams
  HPDF.UseXRefStream := true;     // Emit /Type /XRef instead of xref table
  HPDF.UseObjectStreams := true;  // Optional: also pack 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;

 

انظر أيضا

UseObjectStreams, Compression, Version, PDF Filter Support