THotPDF.UseXRefStream Property

 

THotPDF.UseXRefStream

THotPDF

 

Øverst  Forrige  Neste

Skriv en PDF 1.5 /Type /XRef-cross-reference-strøm (ISO 32000-1 7.5.8) i stedet for den tekstlige sekvensen xref ... trailer. Nyttelasten i beholderen komprimeres med Flate og PNG Up-prediksjon (/DecodeParms /Predictor 12), feltbreddene i /W tilpasser seg det faktiske offsetsområdet (de utvides over 4 GiB i stedet for å kuttes av), og hullene i fri-listen kollapser til /Index-underseksjoner slik at spredte objektnumre ikke lenger koster én rad hver

 

Delphi-syntaks:

property UseXRefStream: Boolean;

 

C++-syntaks:

__property bool UseXRefStream;

 

Beskrivelse

Når UseXRefStream er true, skriver EndDoc ett enkelt indirekte strømobjekt av typen /Type /XRef i stedet for den eldre tekstlige sekvensen xref-tabell + trailer + startxref. Oppføringene bruker /W [1 4 2]: ett typefelt på én byte, en offset på fire byte (eller vertsnummeret for et komprimert objekt) og en generasjon på to byte (eller indeksen for et komprimert objekt). Hele tabellen FlateDecode-komprimeres, noe som vanligvis kutter xref-overhead med 4-10x i store dokumenter

 

XRef-strømmer er et absolutt krav for funksjonen UseObjectStreams: bare den binære xref-strømmen kan kode type-2-oppføringene for komprimerte objekter som peker inn i /Type /ObjStm-containere. Hvis UseXRefStream slås av, deaktiveres UseObjectStreams automatisk ved lagring

 

Standardverdi: false (valgfritt - beholder den tekstlige xref-tabellen for verktøy som har xref-nøkkelordet hardkodet og for maksimal kompatibilitet med PDF 1.4 / tidligere lesere)

Hvis UseXRefStream settes til true på et dokument der Version er lavere enn PDF 1.5, ignoreres det stille ved lagring - den tekstlige xref-en skrives i stedet

 

PDF/A-1 tvinger også frem den tekstlige xref-en: ISO 19005-1 bygger på PDF 1.4, og klausul 6.1.4 forbyr cross-reference-strømmer, så når PDFACompliance angir et part-1-nivå (som 'B' eller 'A'), nullstiller EndDoc UseXRefStream og UseObjectStreams ved lagring uansett hvordan de er satt; PDF/A-2 og PDF/A-3 bygger på PDF 1.7 og fortsetter å respektere begge

 

Kodeeksempel

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;

 

Se også

UseObjectStreams, Compression, Version, PDF Filter Support