THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Вверх  Назад  Далее

Pack eligible indirect objects into PDF 1.5 /Type /ObjStm container streams (ISO 32000-1 7.5.7) to cut on-disk PDF size.

 

Delphi syntax:

property UseObjectStreams: Boolean;

 

C++ syntax:

__property bool UseObjectStreams;

 

Описание

Когда UseObjectStreams true и UseXRefStream также true, EndDoc упаковывает каждый подходящий indirect object — dictionaries, arrays, numbers, names, strings, booleans, nulls — в один или несколько /Type /ObjStm container streams согласно ISO 32000-1 7.5.7. Cross-reference stream затем ссылается на packed objects через type-2 entries, устраняя отдельные N G obj ... endobj framing bytes и per-row textual xref entries

 

Естественно сочетается со свойством UseXRefStream для самого компактного PDF 1.5+ writer pipeline. ObjStm packer оставляет stream objects, encryption dictionary и trailer-pointed Catalog / Info dictionaries несжатыми, чтобы даже минимальные PDF parsers могли находить document roots и расшифровывать content

 

Значение по умолчанию: false (opt-in; сохраняет textual xref table для tooling, которое hard-codes keyword xref, и для максимальной совместимости с PDF 1.4 / earlier readers)

Установка UseObjectStreams в true тихо понижается до false, когда UseXRefStream выключен или Version ниже PDF 1.5, потому что type-2 entries нельзя представить в textual xref table согласно spec

 

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;

 

Size reduction

В документах, где преобладают small indirect dictionaries, экономия обычно составляет 20-40% от post-FlateDecode file size. 30-page graphics-only smoke test сокращается с 14502 bytes до 8488 bytes (-41.5%)

 

См. также

UseXRefStream, Compression, Version, PDF Filter Support