THotPDF.UseObjectStreams Property

 

THotPDF.UseObjectStreams

THotPDF

 

Top  Previous  Next

Empaqueta los objetos indirectos elegibles en streams contenedores /Type /ObjStm de PDF 1.5 (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 es true (y UseXRefStream también lo es), EndDoc empaqueta cada objeto indirecto elegible - diccionarios, arrays, números, nombres, cadenas, booleanos, nulos - en uno o más streams contenedores /Type /ObjStm según ISO 32000-1 7.5.7. El stream de referencias cruzadas referencia entonces los objetos empaquetados mediante entradas de tipo 2 (número del objeto ObjStm anfitrión + índice de entrada dentro de ese stream), de modo que se eliminan los bytes de enmarcado individuales N G obj ... endobj y las entradas xref textuales por fila.

 

Combina naturalmente con la propiedad UseXRefStream para la tubería de escritura PDF 1.5+ más compacta. El empaquetador ObjStm deja sin comprimir los objetos stream, el diccionario de cifrado y los diccionarios Catalog e Info apuntados por el trailer, de modo que incluso los parsers PDF mínimos puedan seguir localizando las raíces del documento y descifrando el contenido.

 

Valor por defecto: false (opcional).

Asignar UseObjectStreams a true se degrada silenciosamente a false cuando UseXRefStream está desactivado (las entradas de tipo 2 no son representables en la tabla xref textual según la especificación) o cuando la Version es anterior a PDF 1.5.

 

También se fuerza a desactivado bajo PDF/A-1: ISO 19005-1 (PDF 1.4, cláusula 6.1.4) prohíbe los object streams comprimidos junto con los streams de referencias cruzadas sobre los que viajan, de modo que EndDoc emite una tabla xref clásica siempre que PDFACompliance nombre un nivel part-1, mientras que PDF/A-2 y PDF/A-3 (PDF 1.7) lo dejan disponible

 

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;

 

Reducción de tamaño

En documentos dominados por diccionarios indirectos pequeños (documentos multipágina, anotaciones, widgets AcroForm, elementos del árbol de estructura, capas de Optional Content) el ahorro suele ser del 20-40% del tamaño del archivo tras FlateDecode. Una prueba de humo de 30 páginas solo gráficos pasa de 14502 bytes a 8488 bytes (-41,5%).

 

Véase también

UseXRefStream, Compression, Version, PDF Filter Support