THotPDF.UseXRefStream-Eigenschaft

 

THotPDF.UseXRefStream

THotPDF

 

Oben  Zurück  Weiter

Erzeugt einen PDF 1.5 /Type /XRef-Cross-Reference-Stream (ISO 32000-1 7.5.8) anstelle der textuellen Sequenz xref ... trailer

 

Delphi-Syntax:

property UseXRefStream: Boolean;

 

C++-Syntax:

__property bool UseXRefStream;

 

Beschreibung

Wenn UseXRefStream auf true gesetzt ist, schreibt EndDoc ein einzelnes indirektes /Type /XRef-Stream-Objekt anstelle der älteren textuellen Sequenz aus xref-Tabelle + trailer + startxref; die Einträge verwenden /W [1 4 2]: ein Ein-Byte-Typfeld, ein Vier-Byte-Offset (oder die Host-Nummer des komprimierten Objekts) und eine Zwei-Byte-Generation (oder der Index des komprimierten Objekts); die gesamte Tabelle ist FlateDecode-komprimiert, was den xref-Overhead bei großen Dokumenten typischerweise um das 4- bis 10-fache reduziert

 

XRef-Streams sind eine zwingende Voraussetzung für das Feature UseObjectStreams: Nur der binäre XRef-Stream kann die Typ-2-Einträge für komprimierte Objekte kodieren, die auf /Type /ObjStm-Container verweisen; das Deaktivieren von UseXRefStream deaktiviert beim Speichern automatisch auch UseObjectStreams

 

Standardwert: false (Opt-in — behält die textuelle xref-Tabelle für Werkzeuge bei, die das Schlüsselwort xref fest einkodiert haben, und sorgt für maximale Kompatibilität mit PDF 1.4- oder älteren Anzeigeprogrammen)

Das Setzen von UseXRefStream to true bei einem Dokument, dessen Version unter PDF 1.5 liegt, wird beim Speichern stillschweigend ignoriert — stattdessen wird die textuelle xref ausgegeben

 

Unter PDF/A-1 wird ebenfalls die textuelle xref erzwungen: ISO 19005-1 basiert auf PDF 1.4 und Klausel 6.1.4 verbietet Cross-Reference-Streams; wenn also PDFACompliance ein Part-1-Level angibt (wie 'B' oder 'A'), deaktiviert EndDoc beim Speichern UseXRefStream und UseObjectStreams unabhängig von deren vorheriger Einstellung; PDF/A-2 und PDF/A-3 basieren auf PDF 1.7 und berücksichtigen weiterhin beide Einstellungen

 

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;

 

Siehe auch

UseObjectStreams, Compression, Version, PDF Filter Support