THotPDF.CompressDocument

THotPDF

 

Propriétés  CompactFontSubsetting  EnableFontSubsetting

Active d’un seul commutateur toutes les options d’écriture qui rendent le document plus petit

 

Syntaxe Delphi :

property CompressDocument: Boolean;

 

Syntaxe C++ :

__property bool CompressDocument;

 

Description

Mettez CompressDocument à true avant BeginDoc pour écrire le document suivant aussi compact que HotPDF sait le faire sans changer son apparence. Pour ce document, BeginDoc active :

  • la compression FlateDecode du contenu de page et des autres flux, au niveau de compression maximal
  • un flux de références croisées avec object streams, qui regroupe la plupart des objets dans des conteneurs compressés (ISO 32000-1 7.5.7 et 7.5.8) ; chaque conteneur reçoit au plus 250 objets au lieu de 100, car moins de conteneurs, plus gros, se compressent mieux. Une limite posée via ConfigureAdaptiveObjectStreamPacking est conservée
  • la réduction des polices en sous-ensembles, avec sous-ensembles compacts, pour que chaque police embarquée ne garde que les glyphes que le document affiche

Les object streams exigent PDF 1.5. Quand Version est plus ancienne, elle est montée à PDF 1.5 sauf si la version est verrouillée ; la sortie PDF/A-1 garde sa table de références croisées classique, comme l’exige la norme

 

CompressDocument ne modifie pas les réglages que vous avez choisis. EndDoc restaure les valeurs de Compression, CompressionLevel, UseXRefStream, UseObjectStreams, EnableFontSubsetting, CompactFontSubsetting, de la limite d’objets par conteneur et de la montée de version une fois le document écrit, si bien que le document suivant, sans CompressDocument, est écrit comme avant. Les images gardent leurs propres réglages de compression ; rien n’est rééchantillonné ni recompressé avec perte

 

La propriété est désactivée par défaut. Un document de trois pages mêlant texte anglais et chinois en Arial et SimSun passe d’environ 10 MB à environ 20 KB, l’essentiel venant de la réduction des polices. La contrepartie, c’est qu’une telle sortie se retravaille plus difficilement après coup : les polices sous-ensemble ne peuvent pas afficher les caractères que le document n’utilise pas, et les object streams compressés ne se lisent pas dans un éditeur de texte

 

Exemple :

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

 

Voir aussi : CompactFontSubsetting, EnableFontSubsetting, CompressLoadedDocument