THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Topo  Anterior  Seguinte

Pack eligible indirect objects into PDF 1.5 /Type /ObjStm container streams (ISO 32000-1 7.5.7) to cut on-disk PDF size.

 

Delphi syntax:

property UseObjectStreams: Boolean;

 

C++ syntax:

__property bool UseObjectStreams;

 

Descrição

Quando UseObjectStreams é true (e UseXRefStream também é true), EndDoc empacota todos os objetos indiretos elegíveis - dicionários, matrizes, números, nomes, strings, booleanos e nulos - num ou mais fluxos contentores /Type /ObjStm de acordo com a ISO 32000-1 7.5.7. O fluxo de referências cruzadas passa então a referenciar os objetos empacotados através de entradas do tipo 2 (número do objeto ObjStm anfitrião + índice da entrada dentro desse fluxo), pelo que os bytes de enquadramento individuais N G obj ... endobj e as entradas textuais xref por linha são eliminados

 

Combina naturalmente com a propriedade UseXRefStream para o pipeline de escrita PDF 1.5+ mais compacto. O empacotador ObjStm deixa os objetos stream, o dicionário de encriptação e os dicionários Catalog e Info apontados pelo trailer sem compressão para que até analisadores PDF mínimos consigam localizar as raízes do documento e desencriptar o conteúdo

 

Default value: false (opt-in).

Definir UseObjectStreams como true regride silenciosamente para false quando UseXRefStream está desligado (as entradas do tipo 2 não são representáveis na tabela xref textual segundo a especificação) ou quando Version está abaixo de PDF 1.5

 

Code Example

HPDF := THotPDF.Create( nil );
try
  HPDF.FileName := 'c:\Output.pdf';
  HPDF.Version := pdf15;          // Object streams require PDF 1.5+
  HPDF.UseXRefStream := true;     // ObjStm references need a /Type /XRef stream
  HPDF.UseObjectStreams := true;  // Pack indirect 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;

 

Size reduction

Em documentos dominados por pequenos dicionários indiretos (documentos multipágina, anotações, widgets AcroForm, elementos de árvore de estrutura, camadas Optional Content), a poupança é tipicamente 20-40% do tamanho do ficheiro após FlateDecode. Um smoke test gráfico de 30 páginas encolhe de 14502 bytes para 8488 bytes (-41.5%)

 

See Also

UseXRefStream, Compression, Version, PDF Filter Support