THotPDF.CompressDocument

THotPDF

 

Propiedades  CompactFontSubsetting  EnableFontSubsetting

Activa con un solo switch todas las opciones del writer que hacen el documento más pequeño

 

Sintaxis Delphi:

property CompressDocument: Boolean;

 

Sintaxis C++:

__property bool CompressDocument;

 

Descripción

Asignen CompressDocument a true antes de BeginDoc para escribir el próximo documento con el menor tamaño que HotPDF pueda lograr sin cambiar cómo se ve. Para ese documento, BeginDoc activa:

  • Compresión FlateDecode del contenido de página y de los demás streams, al nivel máximo de compresión
  • Un cross-reference stream con object streams, que empaqueta la mayoría de los objetos en contenedores comprimidos (ISO 32000-1 7.5.7 y 7.5.8); cada contenedor guarda hasta 250 objetos en lugar de 100, porque menos contenedores más grandes comprimen mejor. Un límite fijado mediante ConfigureAdaptiveObjectStreamPacking se respeta
  • Font subsetting, con compact font subsets, para que cada font embebida conserve solo los glyphs que el documento muestra

Los object streams necesitan PDF 1.5. Cuando Version es más antigua, se sube a PDF 1.5 salvo que la versión esté bloqueada; la salida PDF/A-1 conserva su tabla cross-reference clásica, como exige el estándar

 

CompressDocument no cambia las configuraciones que ustedes eligieron. EndDoc restaura los valores de Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, el límite de objetos por contenedor y el raise de versión al escribir el documento, así que el próximo documento sin CompressDocument se escribe como siempre. Las imágenes conservan sus propias configuraciones de compresión; nada se remuestrea ni se recomprime con pérdida

 

La propiedad viene desactivada por defecto. Un documento de tres páginas con texto mezclado en inglés y chino, en Arial y SimSun, baja de unos 10 MB a unos 20 KB, y la mayor parte del ahorro viene del font subsetting. La contrapartida es que la salida es más difícil de editar después: las fonts subset no pueden mostrar caracteres que el documento no usa, y los object streams comprimidos no se pueden leer en un editor de texto

 

Ejemplo:

PDF.CompressDocument := True;
        PDF.BeginDoc;
        PDF.CurrentPage.SetFont('SimSun', [], 11);
        PDF.CurrentPage.TextOut(40, 80, 0, 'Compressed output');
        PDF.EndDoc;

 

Ver también: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument