|
Schrijf een PDF 1.5 /Type /XRef-cross-reference stream (ISO 32000-1 7.5.8) in plaats van de tekstuele xref ... trailer-volgorde
Delphi-syntaxis:
property UseXRefStream: Boolean;
C++-syntaxis:
__property bool UseXRefStream;
Beschrijving
Wanneer UseXRefStream op true staat, schrijft EndDoc één indirect streamobject van het type /Type /XRef in plaats van de oude tekstuele xref-tabel + trailer + startxref-volgorde. De vermeldingen gebruiken /W [1 4 2]: een typeveld van één byte, een offset van vier bytes (of het hostnummer van een gecomprimeerd object), en een generatie van twee bytes (of de index van het gecomprimeerde object). De hele tabel wordt FlateDecode-gecomprimeerd, wat de xref-overhead op grote documenten doorgaans 4-10x verlaagt
XRef-streams zijn een harde voorwaarde voor de UseObjectStreams-functie: alleen de binaire xref-stream kan de type-2-vermeldingen voor gecomprimeerde objecten coderen die naar /Type /ObjStm-containers verwijzen. Als u UseXRefStream uitzet, wordt UseObjectStreams bij het opslaan automatisch uitgeschakeld
Standaardwaarde: false (opt-in - behoudt de tekstuele xref-tabel voor tooling die het xref-sleutelwoord hardcodeert en voor maximale compatibiliteit met PDF 1.4 / eerdere readers)
Als UseXRefStream op true wordt gezet voor een document waarvan Version onder PDF 1.5 ligt, wordt dat bij het opslaan stilzwijgend genegeerd - in plaats daarvan wordt de tekstuele xref geschreven
Codevoorbeeld
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;
Zie ook
UseObjectStreams, Compression, Version, PDF-filterondersteuning
|