Le poids du fichier et le temps de calcul
Régler l'effort de compression du document : le plus rapide, le plus petit, ou le fichier lisible dans un éditeur de texte.
Résumé
Quand on range des vêtements dans une valise, on peut les plier vite ou les tasser longuement. Le résultat tient dans le même sac, mais pas dans le même volume et pas dans le même temps — et c'est tout l'échange qui se joue ici. Le mode où l'on ne tasse rien du tout est à part : il existe pour le jour où l'on veut ouvrir le fichier dans un simple éditeur de texte et lire ce qu'il y a dedans.
Techniquement
Écrit au premier niveau d'une requête, sous
"compression"
compression règle la force avec laquelle les flux du document sont compressés. Il existe trois réglages : compresser ou non, le niveau de 1 à 9, et le rassemblement des objets qui ne sont pas des flux dans des flux d'objets /ObjStm derrière un flux de références croisées /XRef. Ce dernier réduit nettement un document riche en petits objets, et demande un logiciel de lecture qui connaisse PDF 1.5 ; il reste éteint par défaut, si bien qu'un fichier destiné à un logiciel de lecture plus ancien sort tel quel.
Schéma de la requête
-
compression— objet, facultatif, absent par défaut. -
compression.enabled— booléen, facultatif,truepar défaut. Une requête qui nomme le bloc sans rien dire compresse quand même, comme tout document. Mis àfalse, le fichier s'ouvre dans un éditeur de texte. -
compression.level— entier, facultatif, de 1 à 9. 1 est le plus rapide et laisse le plus derrière lui, 9 le plus petit et le plus lent. Absent, le moteur garde son niveau. Un nombre hors de 1 à 9 est refusé, et la réponse le nomme. -
compression.object_streams— booléen, facultatif,falsepar défaut. Rassemble dans des flux compressés les objets qui ne sont pas eux-mêmes des flux, et écrit la table de références croisées de la même façon. Demande PDF 1.5 au moins.
Une requête entière qui crée un PDF
{
"compression": { "level": 9, "object_streams": true },
"standard_fonts": [{ "name": "sans", "face": "helvetica" }],
"items": [
{
"type": "text",
"rect": { "llx": 60, "lly": 740, "urx": 535, "ury": 762 },
"content": ["Packed as small as it goes"],
"font": "sans",
"font_size": 14
}
]
}
Ce qui est dessiné, et comment cela sort
Tout ce qu'on peut dessiner sur une page La première page, montrée pendant que le reste arrive Les calques que le logiciel de lecture montre ou cache Un nom qui vaut pour plusieurs calques à la fois Un dessin fait une fois, montré par un bouton Les jeux de calques que le logiciel propose Les calques dont le logiciel ne montre qu'un à la fois
Où aller ensuite
Toutes les clés JSON d'une requête, en une page Les quarante et un autres réglages d'une requête