Propriété THotPDF.UseObjectStreams

 

THotPDF.UseObjectStreams

THotPDF

 

Haut  Précédent  Suivant

Regroupe les objets indirects éligibles dans des flux conteneurs PDF 1.5 /Type /ObjStm (ISO 32000-1 7.5.7) pour réduire la taille du PDF sur disque

 

Syntaxe Delphi :

property UseObjectStreams: Boolean;

 

Syntaxe C++ :

__property bool UseObjectStreams;

 

Description

Lorsque UseObjectStreams est activé et que UseXRefStream l’est aussi, EndDoc regroupe tous les objets indirects éligibles - dictionnaires, tableaux, nombres, noms, chaînes, booléens, nulls - dans un ou plusieurs flux conteneurs /Type /ObjStm selon ISO 32000-1 7.5.7. Le flux de références croisées référence alors les objets regroupés au moyen d’entrées de type 2, c’est-à-dire le numéro d’objet hôte ObjStm et l’index d’entrée dans ce flux, ce qui élimine les octets d’encadrement individuels N G obj ... endobj et les entrées textuelles xref ligne par ligne

 

S’associe naturellement à la propriété UseXRefStream pour la chaîne d’écriture PDF 1.5+ la plus compacte. Le compresseur ObjStm laisse les objets flux, le dictionnaire de chiffrement ainsi que les dictionnaires Catalog et Info pointés par le trailer non compressés afin que même les analyseurs PDF minimaux puissent encore localiser les racines du document et déchiffrer le contenu

 

Valeur par défaut : false, en activation explicite

Le réglage de UseObjectStreams à true revient silencieusement à false lorsque UseXRefStream est désactivé, car les entrées de type 2 ne sont pas représentables dans la table xref textuelle selon la spécification, ou lorsque Version est inférieur à PDF 1.5

 

Exemple de code

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;

 

Réduction de taille

Sur les documents dominés par de petits dictionnaires indirects (documents multipages, annotations, widgets AcroForm, éléments d’arborescence de structure, calques de contenu optionnel), le gain représente généralement 20 à 40 % de la taille du fichier après FlateDecode. Un test de validation graphique de 30 pages passe de 14502 octets à 8488 octets (-41,5 %)

 

Voir aussi

UseXRefStream, Compression, Version, Prise en charge des filtres PDF