|
Emette un PDF 1.5 /Type /XRef cross-reference stream (ISO 32000-1 7.5.8) instead of the textual xref ... trailer sequence. The container payload is Flate-compressed with PNG Up prediction (/DecodeParms /Predictor 12), field widths in /W si adattino all'intervallo effettivo degli offset (allargandosi oltre i 4 GiB invece di troncare), e i buchi di free-list collassano in /Index sotto-sezioni così i numeri di oggetto sparsi smettono di costare una riga ciascuno.
Sintassi Delphi:
property UseXRefStream: Boolean;
Sintassi C++:
__property bool UseXRefStream;
Descrizione
Quando UseXRefStream è true, EndDoc scrive un singolo /Type /XRef in uno stream indiretto invece della tabella testuale xref tabella + trailer + startxref . Le voci usano /W [1 4 2]: un campo tipo di un byte, un offset di quattro byte (o numero ospite dell'oggetto compresso) e una generazione di due byte (o indice dell'oggetto compresso). L'intera tabella è compressa FlateDecode, tipicamente riducendo l'overhead xref di 4-10 volte sui documenti grandi.
Gli stream XRef sono un prerequisito imprescindibile per il UseObjectStreams : solo lo stream xref binario può codificare le voci di tipo 2 degli oggetti compressi che puntano dentro /Type /ObjStm . Disattivare UseXRefStream disabilita automaticamente UseObjectStreams al salvataggio.
Valore predefinito: false (opt-in - keeps the textual xref table for tooling that hard-codes the xref keyword and for maximum compatibility with PDF 1.4 / earlier readers).
Impostare UseXRefStream su true su un documento il cui Version è precedente al PDF 1.5 viene ignorato silenziosamente al salvataggio - viene emessa la xref testuale.
PDF/A-1 forza anche la xref testuale: ISO 19005-1 è costruita sul PDF 1.4 e la clausola 6.1.4 vieta gli stream di riferimenti incrociato, quindi quando PDFACompliance names a part-1 level (such as 'B' oppure 'A') EndDoc ripulisce UseXRefStream e UseObjectStreams al salvataggio indipendentemente da come erano impostati; PDF/A-2 e PDF/A-3 sono costruiti sul PDF 1.7 e continuano a onorarli entrambi
Esempio di codice
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;
Vedi anche:
UseObjectStreams, Compression, Version, Supporto dei filtri PDF
|