THotPDF.CompressDocument

THotPDF

 

Properties  CompactFontSubsetting  EnableFontSubsetting

Liga, com uma única chave, todas as opções de gravação que deixam o documento menor

 

Sintaxe Delphi:

property CompressDocument: Boolean;

 

Sintaxe C++:

__property bool CompressDocument;

 

Descrição

Defina CompressDocument como true antes de BeginDoc para gravar o próximo documento no menor tamanho que o HotPDF consegue alcançar sem mudar o visual dele. Para esse documento, o BeginDoc liga:

  • Compressão FlateDecode do conteúdo de página e de outros streams, no nível máximo de compressão
  • Um cross-reference stream com object streams, que empacota a maior parte dos objetos em contêineres comprimidos (ISO 32000-1 7.5.7 e 7.5.8); cada contêiner guarda até 250 objetos em vez de 100, pois menos contêineres maiores comprimem melhor. Um limite definido por meio de ConfigureAdaptiveObjectStreamPacking é mantido
  • Subsetting de fontes, com subsets compactos de fontes, para que cada fonte embutida mantenha apenas os glifos que o documento exibe

Object streams exigem PDF 1.5. Quando Version é mais antiga, ela sobe para PDF 1.5, a menos que a versão esteja travada; a saída PDF/A-1 mantém a cross-reference table clássica, como o padrão exige

 

O CompressDocument não muda as configurações que você escolheu. O EndDoc restaura os valores de Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, o limite de objetos por contêiner e a elevação de versão quando o documento é gravado, de modo que o próximo documento sem CompressDocument sai como antes. Imagens mantêm as próprias configurações de compressão; nada é reamostrado ou recomprimido com perda

 

A propriedade vem desligada por padrão. Um documento de três páginas com texto misturando inglês e chinês em Arial e SimSun cai de cerca de 10 MB para cerca de 20 KB, com a maior parte da economia vinda do subsetting de fontes. O trade-off é que a saída fica mais difícil de editar depois: fontes de subset não conseguem exibir caracteres que o documento não usa, e object streams comprimidos não são legíveis em um editor de texto

 

Exemplo:

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

 

See also: CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument