|
Emit a PDF 1.5 /Type /XRef cross-reference stream (ISO 32000-1 7.5.8) instead of the textual xref ... trailer sequence.
Delphi 구문:
property UseXRefStream: Boolean;
C++ 구문:
__property bool UseXRefStream;
설명
UseXRefStream이 true이면 EndDoc은 legacy textual xref table + trailer + startxref sequence 대신 단일 /Type /XRef indirect stream object를 씁니다. Entry는 /W [1 4 2]를 사용합니다. 즉 1-byte type field, 4-byte offset(또는 compressed-object host number), 2-byte generation(또는 compressed-object index)입니다. 전체 table은 FlateDecode-compressed되어 큰 document에서 일반적으로 xref overhead를 4-10배 줄입니다
XRef stream은 UseObjectStreams feature의 필수 전제조건입니다. Binary xref stream만 /Type /ObjStm container를 가리키는 type-2 compressed-object entry를 encode할 수 있습니다. UseXRefStream을 끄면 save time에 UseObjectStreams가 자동으로 disable됩니다
Default value: false입니다(opt-in). xref keyword를 hard-code한 tooling 및 PDF 1.4 / earlier reader와의 최대 compatibility를 위해 textual xref table을 유지합니다
Version이 PDF 1.5보다 낮은 document에서 UseXRefStream을 true로 설정해도 save time에 조용히 무시되며 대신 textual xref가 emit됩니다
PDF/A-1도 textual xref를 강제합니다. ISO 19005-1은 PDF 1.4를 기반으로 하며 clause 6.1.4가 cross-reference stream을 금지하므로, PDFACompliance가 part-1 level('B' 또는 'A' 등)을 지정하면 EndDoc은 설정값과 관계없이 save time에 UseXRefStream 및 UseObjectStreams를 clear합니다. PDF/A-2 및 PDF/A-3은 PDF 1.7 기반이므로 둘 다 계속 honour합니다
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;
See Also
UseObjectStreams, Compression, Version, PDF Filter Support
|