THotPDF.UseXRefStream Property

 

THotPDF.UseXRefStream

THotPDF

 

Sus  Anterior  Următor

Emite un flux de cross-reference PDF 1.5 /Type /XRef (ISO 32000-1 7.5.8) în locul secvenței textuale xref ... trailer. Sarcina utilă a containerului este comprimată cu Flate și predicție PNG Up (/DecodeParms /Predictor 12), lățimile câmpurilor din /W se adaptează la intervalul real de offseturi (se lărgesc peste 4 GiB în loc să trunchieze), iar găurile din lista de obiecte libere se colapsează în subsecțiuni /Index astfel încât numerele de obiect rare să nu mai coste câte un rând fiecare

 

Delphi syntax:

property UseXRefStream: Boolean;

 

C++ syntax:

__property bool UseXRefStream;

 

Descriere

Când UseXRefStream este true, EndDoc scrie un singur obiect de flux indirect /Type /XRef în locul secvenței moștenite formate din tabela textuală xref + trailer + startxref. Intrările folosesc /W [1 4 2]: un câmp de tip pe un byte, un offset pe patru bytes (sau numărul obiectului gazdă al obiectului comprimat) și o generație pe doi bytes (sau indexul obiectului comprimat). Întreaga tabelă este comprimată cu FlateDecode, reducând de obicei suprasarcina xref de 4-10 ori la documentele mari

 

Fluxurile XRef sunt o condiție obligatorie pentru funcția UseObjectStreams: doar fluxul xref binar poate codifica intrările de obiect comprimat de tip 2 care indică spre containere /Type /ObjStm. Oprirea lui UseXRefStream dezactivează automat UseObjectStreams la salvare

 

Valoare implicită: false (activare opțională - păstrează tabela xref textuală pentru instrumente care folosesc explicit cuvântul-cheie xref și pentru compatibilitate maximă cu PDF 1.4 și cititoare mai vechi)

Setarea UseXRefStream la true pe un document al cărui Version este sub PDF 1.5 este ignorată în tăcere la salvare - în schimb este emis xref textual

 

PDF/A-1 impune de asemenea tabela xref textuală: ISO 19005-1 se bazează pe PDF 1.4, iar clauza 6.1.4 interzice fluxurile de referințe încrucișate, așa că atunci când PDFACompliance indică un nivel part-1 (cum ar fi 'B' sau 'A'), EndDoc șterge UseXRefStream și UseObjectStreams la salvare, indiferent cum au fost setate; PDF/A-2 și PDF/A-3 se bazează pe PDF 1.7 și continuă să le respecte pe ambele

 

Exemplu de cod

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;

 

See Also

UseObjectStreams, Compression, Version, PDF Filter Support