Propiedad THotPDF.UseObjectStreams

 

THotPDF.UseObjectStreams

THotPDF

 

Arriba  Anterior  Siguiente

Empaqueta los objetos indirectos elegibles en flujos contenedores PDF 1.5 /Type /ObjStm (ISO 32000-1 7.5.7) para reducir el tamaño del PDF en disco

 

Sintaxis Delphi:

property UseObjectStreams: Boolean;

 

Sintaxis C++:

__property bool UseObjectStreams;

 

Descripción

Cuando UseObjectStreams está en true (y UseXRefStream también está en true), EndDoc empaqueta cada objeto indirecto elegible - diccionarios, arreglos, números, nombres, cadenas, booleanos y nulls - en uno o más flujos contenedores /Type /ObjStm según ISO 32000-1 7.5.7. Luego el flujo de referencias cruzadas referencia los objetos empaquetados mediante entradas de tipo 2 (número de objeto host ObjStm + índice de entrada dentro de ese flujo), así que se eliminan los bytes de encuadre individuales N G obj ... endobj y las entradas xref textuales por fila

 

Se combina de forma natural con la propiedad UseXRefStream para la canalización de escritura PDF 1.5+ más compacta. El empaquetador ObjStm deja sin comprimir los objetos de flujo, el diccionario de cifrado y los diccionarios Catalog e Info apuntados por el trailer, de modo que incluso los analizadores PDF mínimos siguen pudiendo ubicar las raíces del documento y descifrar el contenido

 

Valor predeterminado: false (opcional)

Al establecer UseObjectStreams en true, se degrada silenciosamente a false cuando UseXRefStream está desactivado (las entradas de tipo 2 no se pueden representar en la tabla xref textual según la especificación) o cuando Version está por debajo de PDF 1.5

 

Ejemplo de código

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;

 

Reducción de tamaño

En documentos dominados por diccionarios indirectos pequeños (documentos de varias páginas, anotaciones, widgets AcroForm, elementos del árbol de estructura, capas de contenido opcional) el ahorro suele ser del 20-40% del tamaño del archivo después de FlateDecode. Una prueba rápida de 30 páginas solo con gráficos se reduce de 14502 bytes a 8488 bytes (-41.5%)

 

Véase también

UseXRefStream, Compression, Version, Soporte de filtros PDF