THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Top  Vorige  Volgende

Pakt in aanmerking komende indirecte objecten in PDF 1.5 /Type /ObjStm-containerstreams in (ISO 32000-1 7.5.7) om de PDF-grootte op schijf te verkleinen.

 

Delphi-syntax:

property UseObjectStreams: Boolean;

 

C++-syntax:

__property bool UseObjectStreams;

 

Description

Wanneer UseObjectStreams true is (en UseXRefStream ook true), pakt EndDoc elk in aanmerking komend indirect object - woordenlijsten, arrays, getallen, namen, tekenreeksen, booleans, nulls - in één of meer /Type /ObjStm-containerstreams per ISO 32000-1 7.5.7. De kruisverwijzingsstream verwijst daarna naar de ingepakte objecten via type-2-regels (host-ObjStm-objectnummer + regelindex binnen die stream), zodat individuele N G obj ... endobj-framingsbytes en per-regel tekstuele xref-regels vervallen.

 

Past van nature bij de eigenschap UseXRefStream voor de meest compacte PDF 1.5+-writerspijplijn. De ObjStm-packer laat streamobjecten, de versleutelingswoordenlijst en de naar de trailer wijzende Catalogus- en Info-woordenlijsten ongecomprimeerd, zodat zelfs minimale PDF-parsers de documentwortels kunnen vinden en inhoud kunnen ontsleutelen.

 

Standaardwaarde: false (opt-in).

UseObjectStreams op true zetten zakt geruisloos terug naar false wanneer UseXRefStream uit staat (type-2-regels zijn volgens de specificatie niet representeerbaar in de tekstuele xref-tabel) of wanneer Version onder PDF 1.5 zit.

 

Het wordt ook afgedwongen uit onder PDF/A-1: ISO 19005-1 (PDF 1.4, clausule 6.1.4) verbiedt gecomprimeerde objectstreams samen met de kruisverwijzingsstreams waarop ze rijden, dus EndDoc geeft een klassieke xref-tabel uit zodra PDFACompliance een part-1-niveau noemt, terwijl PDF/A-2 en PDF/A-3 (PDF 1.7) het beschikbaar laten

 

Codevoorbeeld

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;

 

Groottebesparing

Op documenten die domineren door kleine indirecte woordenlijsten (documenten met veel pagina's, annotaties, AcroForm-widgets, structuurboomelementen, Optional Content-lagen) is de besparing typisch 20-40% van de bestandsgrootte na FlateDecode. Een 30-pagina rooktest met alleen graphics krimpt van 14502 bytes naar 8488 bytes (-41,5%).

 

Zie ook

UseXRefStream, Compression, Version, PDF-filterondersteuning