Un nom qui vaut pour plusieurs calques à la fois

Dessinez des éléments sur un nom qui suit plusieurs calques, et dites ce que le logiciel de lecture doit trouver vrai d’eux avant de montrer ce qu’il couvre.

Le résultat dans un vrai PDF

Un seul dessin, et chacun y voit le sien

Le même plan d’étage sur six calques montrés et cachés un par un : les meubles et les cotes montrés, les notes internes cachées jusqu’à ce qu’on les demande, et un filigrane de brouillon destiné à l’écran et non au papier.

Ouvrir le PDF Voir l’exemple complet

Résumé

Les calques s’affichent et se masquent un par un. Une règle est un nom qui en surveille plusieurs : montrer cet avertissement tant que tous les calques de sécurité sont allumés, montrer cette note dès qu’un calque de langue est éteint. Les éléments dessinés sur la règle la suivent, et le logiciel de lecture calcule la règle à partir des calques eux-mêmes plutôt qu’à partir d’un interrupteur qui lui serait propre.

Techniquement

Écrit au premier niveau d’une requête, sous "layer_rules"

layer_rules écrit les expressions de visibilité du document : un dictionnaire d’appartenance qui nomme plusieurs calques et la politique qui décide de leur visibilité. Un élément dessiné sur le nom de la règle suit la règle. Le nom se pose à côté des calques déclarés, donc une règle qui prend le nom d’un calque déclaré par la requête est refusée.

Schéma de la requête

  • layer_rules — tableau, facultatif, vide par défaut.
  • layer_rules[].name — chaîne, obligatoire. Le nom que les éléments indiquent pour dire sur quoi ils sont dessinés. Il ne doit pas être celui d’un calque déclaré.
  • layer_rules[].shown — objet, obligatoire. layers — tableau de chaînes, les calques déclarés que la règle suit ; policy — l’une des valeurs all_visible, any_visible, any_hidden, all_hidden.
  • layer_rules[].expression — objet, facultatif. Une expression logique sur des calques, qu’un logiciel de lecture qui sait les lire lit à la place de shown ; un autre lit shown, et c’est pourquoi la règle en donne toujours un. Quatre formes, imbriquées aussi profond qu’il le faut : {"layer": name}, vraie tant que ce calque est affiché ; {"and": […]}, vraie tant que chaque opérande l’est ; {"or": […]}, vraie tant qu’au moins un opérande l’est ; {"not": …}, vraie tant que son opérande est faux. Un calque qu’aucune entrée de layers n’a déclaré est refusé. Elle demande PDF 1.6.

Une règle décide de ce qui est montré, jamais de ce qui est imprimé : ce qui part sur le papier est réglé par l’entrée de chaque calque sous layers.

Une requête entière qui crée un PDF

{
  "layers": [{ "name": "French" }, { "name": "Safety" }],
  "layer_rules": [
    {
      "name": "french-safety",
      "shown": { "all_visible": ["French", "Safety"] }
    }
  ],
  "standard_fonts": [{ "name": "sans", "face": "helvetica" }],
  "items": [
    {
      "type": "text",
      "rect": { "llx": 60, "lly": 740, "urx": 535, "ury": 765 },
      "content": ["A warning shown while both layers are on"],
      "font": "sans",
      "font_size": 14
    }
  ]
}

La ligne qui l’envoie, en trois langages

Ce qui est dessiné, et ce que cela donne

Tout ce qu’on peut dessiner sur une page Le poids du fichier et le temps de calcul La première page, montrée pendant que le reste arrive Les calques que le logiciel de lecture montre ou cache Un dessin fait une fois, montré par un bouton Dessins lus dans des fichiers SVG Les jeux de calques que le logiciel de lecture 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

Voir les prix Voir les exemples