THotPDF.UseObjectStreams – vlastnost

 

THotPDF.UseObjectStreams – vlastnost

THotPDF

 

Nahoru  Předchozí  Další

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

 

Syntaxe Delphi:

property UseObjectStreams: Boolean;

 

Syntaxe C++:

__property bool UseObjectStreams;

 

Popis

Když je UseObjectStreams true (a UseXRefStream je také true), EndDoc zabalí každý způsobilý nepřímý objekt - slovníky, pole, čísla, názvy, řetězce, booleovské hodnoty, null - do jednoho nebo více kontejnerových streamů /Type /ObjStm podle ISO 32000-1 7.5.7. Stream křížových referencí pak odkazuje na zabalené objekty přes položky typu 2 (číslo hostitelského objektu ObjStm + index položky uvnitř tohoto streamu), takže se odstraní jednotlivé rámovací bajty N G obj ... endobj i textové položky xref po řádcích

 

Přirozeně se kombinuje s vlastností UseXRefStream pro nejkompaktnější zapisovací pipeline PDF 1.5+. Balicí část ObjStm ponechává streamové objekty, šifrovací slovník a slovníky Catalog a Info odkazované trailerem nekomprimované, aby i minimální parsery PDF dokázaly stále najít kořeny dokumentu a dešifrovat obsah

 

Výchozí hodnota: false (opt-in)

Nastavení UseObjectStreams na true se tiše sníží na false, když je UseXRefStream vypnuté (položky typu 2 nejsou podle specifikace reprezentovatelné v textové tabulce xref) nebo když je Verze pod PDF 1.5

 

V režimu PDF/A-1 je také vynuceně vypnuté: ISO 19005-1 (PDF 1.4, clause 6.1.4) zakazuje komprimované objektové streamy spolu se streamy křížových referencí, na nichž stojí, takže EndDoc vydá klasickou tabulku xref vždy, když PDFACompliance pojmenovává úroveň části 1, zatímco PDF/A-2 a PDF/A-3 (PDF 1.7) je ponechávají dostupné

 

Příklad kódu

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;

 

Zmenšení velikosti

U dokumentů, kterým dominují malé nepřímé slovníky (vícestránkové dokumenty, anotace, widgety AcroForm, prvky stromu struktury, vrstvy Optional Content), je úspora typicky 20-40 % velikosti souboru po FlateDecode. Smoke test s 30 stránkami obsahujícími jen grafiku se zmenší z 14502 bajtů na 8488 bajtů (-41.5 %)

 

Viz také

UseXRefStream, Compression, Verze, PDF Filter Support