THotPDF.UseXRefStream Property

 

THotPDF.UseXRefStream

THotPDF

 

למעלה  הקודם  הבא

פליטת stream cross-reference של PDF 1.5 /Type /XRef (ISO 32000-1 7.5.8) במקום רצף ה-xref ... trailer הטקסטואלי. תוכן המכולה נדחס עם Flate עם חיזוי PNG Up (/DecodeParms /Predictor 12), רוחבי השדות ב-/W מסתגלים לטווח ה-offsets בפועל (מתרחבים מעבר ל-4 GiB במקום להתקצר), והחורים של הרשימה החופשית מתכווצים לתת-מקטעי /Index, כך שמספרי אובייקטים דלילים כבר לא עולה עליהם שורה אחת כל אחד

 

Delphi syntax:

property UseXRefStream: Boolean;

 

C++ syntax:

__property bool UseXRefStream;

 

תיאור

כאשר UseXRefStream הוא true, ‏EndDoc כותב אובייקט stream indirect יחיד מסוג /Type /XRef במקום רצף legacy טקסטואלי של xref table + trailer + startxref. entries משתמשים ב-/W [1 4 2]: שדה type בן byte אחד, offset בן ארבעה bytes, או מספר אובייקט מארח compressed-object, ו-generation בן שני bytes, או compressed-object index. כל הטבלה דחוסה ב-FlateDecode ובדרך כלל מקטינה overhead של xref פי 4-10 במסמכים גדולים

 

XRef streams הם תנאי קשיח ל-feature ‏UseObjectStreams: רק xref stream בינארי יכול לקודד type-2 compressed-object entries שמצביעים לתוך containers מסוג /Type /ObjStm. כיבוי UseXRefStream משבית אוטומטית את UseObjectStreams בזמן שמירה

 

ערך ברירת מחדל: false, opt-in, כדי לשמור את xref table הטקסטואלי לכלים שמקודדים בקשיחות את המילה xref ולתאימות מרבית עם קוראי PDF 1.4 ומוקדמים יותר

הגדרת 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;

 

See Also

UseObjectStreams, Compression, Version, PDF Filter Support