|
Emituje PDF 1.5 /Type /XRef cross-reference stream (ISO 32000-1 7.5.8) umesto tekstualne xref ... trailer sekvence. Sadržaj kontejnera se Flate komprimuje s PNG-Up predikcijom (/DecodeParms /Predictor 12), širine polja u /W se prilagođavaju stvarnom opsegu pomeraja (šire se preko 4 GiB umesto da se odseku), a rupe u listi slobodnih unosa se skupljaju u /Index podsekcije tako da retki brojevi objekata ne koštaju po jedan red
Delphi syntax:
property UseXRefStream: Boolean;
C++ syntax:
__property bool UseXRefStream;
Opis
Kada je UseXRefStream true, EndDoc zapisuje jedan indirektni /Type /XRef stream objekat umesto starog tekstualnog niza xref tabela + trailer + startxref. Unosi koriste /W [1 4 2]: jedno-bajtno polje tipa, četvorobajtni pomeraj (ili broj host objekta kompresovanog objekta) i dvobajtni generacioni broj (ili indeks kompresovanog objekta). Cela tabela se FlateDecode komprimuje, što obično smanjuje xref režijski trošak 4-10 puta na velikim dokumentima
XRef tokovi su strogi uslov za funkciju UseObjectStreams: samo binarni XRef tok može da kodira Type-2 unose kompresovanih objekata koji pokazuju na /Type /ObjStm kontejnere. Kada se UseXRefStream isključi, UseObjectStreams se pri čuvanju dokumenta automatski isključuje
Podrazumevana vrednost: false (opt-in - zadržava tekstualnu xref tabelu za alate koji hard-kodiraju xref ključnu reč i za maksimalnu kompatibilnost sa PDF 1.4 / starijim pregledačima)
Postavljanje UseXRefStream na true na dokumentu čiji je Version ispod PDF 1.5 tiho se zanemaruje pri čuvanju - umesto toga emituje se tekstualni xref
I PDF/A-1 nameće tekstualni xref: ISO 19005-1 je izgrađen na PDF 1.4 i klauza 6.1.4 zabranjuje cross-reference tokove, pa kada PDFACompliance navede nivo prvog dela (na primer 'B' ili 'A'), EndDoc pri čuvanju briše UseXRefStream i UseObjectStreams bez obzira na to kako su postavljeni; PDF/A-2 i PDF/A-3 su izgrađeni na PDF 1.7 i i dalje poštuju obe postavke
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;
Vidi i
UseObjectStreams, Compression, Version, PDF Filter Support
|