THotPDF.UseXRefStream Property

 

THotPDF.UseXRefStream

THotPDF

 

Topo  Anterior  Próximo

Emit a PDF 1.5 /Type /XRef fluxo de referência cruzada (ISO 32000-1 7.5.8) em vez da textual xref ... trailer sequence.

 

Sintaxe Delphi:

property UseXRefStream: Boolean;

 

Sintaxe C++:

__property bool UseXRefStream;

 

Descrição

Quando UseXRefStream é verdadeiro, EndDoc grava um único objeto de fluxo indireto /Type /XRef em vez da sequência textual legada xref table + trailer + startxref. As entradas usam /W [1 4 2]: um campo de tipo de um byte, um deslocamento de quatro bytes (ou número do objeto hospedeiro compactado) e uma geração de dois bytes (ou índice do objeto compactado). Toda a tabela é comprimida por FlateDecode, normalmente reduzindo a sobrecarga xref em 4 a 10 vezes em documentos grandes

 

Os fluxos XRef são um pré-requisito rigoroso para o UseObjectStreams recurso: apenas o stream xref binário pode codificar as entradas tipo-2 do objeto compactado que apontam para o /Type /ObjStm containers. Switching UseXRefStream off automatically disables UseObjectStreams at save time.

 

Valor padrão: falso (adesão opcional; mantém a tabela xref textual para ferramentas que codificam a palavra-chave xref e para máxima compatibilidade com PDF 1.4 / leitores anteriores)

Setting UseXRefStream to true on a document whose Version está abaixo de PDF 1.5 é ignorado silenciosamente no momento da gravação - em vez disso, o xref textual é emitido.

 

PDF/A-1 também força o xref textual: a ISO 19005-1 é baseada no PDF 1.4 e a cláusula 6.1.4 proíbe fluxos de referência cruzada, então quando PDFACompliance names a part-1 level (such as 'B' or 'A') EndDoc limpa UseXRefStream e UseObjectStreams no momento de salvamento, independentemente de como foram definidos; PDF/A-2 e PDF/A-3 baseiam-se em PDF 1.7 e continuam a respeitar ambos

 

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