THotPDF.UseXRefStream 속성

 

THotPDF.UseXRefStream

THotPDF

 

맨 위  이전  다음

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에 UseXRefStreamUseObjectStreams를 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