THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Κορυφή  Προηγούμενο  Επόμενο

Πακετάρει eligible indirect objects σε PDF 1.5 /Type /ObjStm container streams (ISO 32000-1 7.5.7) για να μειώσει το on-disk μέγεθος PDF

 

Delphi syntax:

property UseObjectStreams: Boolean;

 

C++ syntax:

__property bool UseObjectStreams;

 

Περιγραφή

Όταν το UseObjectStreams είναι true (και το UseXRefStream είναι επίσης true), το EndDoc πακετάρει κάθε eligible 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 (host ObjStm object number + entry index μέσα σε εκείνο το stream), οπότε εξαλείφονται τα μεμονωμένα 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 ασυμπίεστα, ώστε ακόμη και minimal PDF parsers να μπορούν να εντοπίσουν document roots και να αποκρυπτογραφήσουν content

 

Προεπιλεγμένη τιμή: false (opt-in)

Η ρύθμιση του UseObjectStreams σε true υποβαθμίζεται σιωπηρά σε false όταν το UseXRefStream είναι off (οι type-2 entries δεν αναπαρίστανται στην textual xref table σύμφωνα με το spec) ή όταν το Version είναι κάτω από PDF 1.5

 

Παράδειγμα κώδικα

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;

 

Μείωση μεγέθους

Σε έγγραφα όπου κυριαρχούν μικρά indirect dictionaries (multi-page documents, annotations, AcroForm widgets, structure-tree elements, Optional Content layers), η εξοικονόμηση είναι συνήθως 20-40% του post-FlateDecode μεγέθους αρχείου. Ένα 30-page graphics-only smoke test μειώνεται από 14502 bytes σε 8488 bytes (-41.5%)

 

See Also

UseXRefStream, Compression, Version, PDF Filter Support