v0.6.0 · langage .pdfl + CLI pdfl

Votre liste de contrôle PDF, sous forme de code exécutable.

PDFLang remplace la liste que quelqu'un parcourt à l'écran par un script versionné. Taux d'encrage, polices incorporées, clauses obligatoires, codes-barres, données personnelles : déclarés une fois, vérifiés sur chaque fichier, dans le terminal ou dans la CI.

profiles/offset.pdfl — un profil de contrôle avant impression offset
profile "offset-magazine" {

  const TAC_LIMIT = 300%
  const MIN_DPI   = 300

  check "Ink coverage" tags: ["prepress"] {
    doc.pages.each { |page|
      tac = prepress::calculate_exact_tac(page.number)
      assert tac <= TAC_LIMIT,
        "page #{page.number}: #{tac}% ink"
    }
  }

  check "Fonts" tags: ["fonts"] {
    loose = prepress::detect_text_substitution()
    assert loose.length == 0,
      "fonts not embedded: #{loose.join(", ")}"
  }
}
134
fonctions documentées
7
espaces de noms
12
commandes CLI
8
langues de documentation

Sept espaces de noms, un seul langage

Chaque espace de noms couvre une classe de problème. Vous n'utilisez que ce dont vous avez besoin : un script qui ne touche jamais à codes:: ne paie pas le coût du balayage des pages.

prepress:: 30 fonctions

Prépresse

Taux d'encrage exact, séparations, tons directs, noir riche, filets maigres, substitution de police, corps minimal, boîtes et fonds perdus. Ce que la plaque vous aurait montré, avant la plaque.

text:: 25 fonctions

Texte

Extraction, normalisation, recherche par expression régulière et validation du contenu réellement présent dans le fichier, détection de données personnelles comprise.

struct:: 23 fonctions

Structure

Le fichier lui-même : métadonnées, XMP, objets internes, chiffrement et permissions, empreintes. Répond à la question : ce PDF est-il bien ce qu'il prétend être ?

fix:: 19 opérations

Normalisation

Boîtes, rotation et ordre des pages, filigranes, fusion et découpe, optimisation. Écrit un nouveau PDF ; l'original n'est jamais modifié.

visual:: 16 fonctions

Images

Résolution effective, qualité, empreinte perceptuelle et comparaison SSIM entre deux versions. Repère le logo basse définition que l'œil valide à 100 %.

codes:: 13 fonctions

Codes-barres

Détecte et décode EAN, UPC, Code 128/39, ITF, QR Code, Data Matrix, Aztec et PDF417 — puis compare la charge utile lue à ce qui devrait s'y trouver.

data:: 8 fonctions

Données externes

Recoupe le contenu du document avec vos propres glossaires, jeux de données et tables de correspondance : numéros de lot, références, terminologie validée.

Des codes de sortie, pas des captures d'écran

Toute commande de validation suit la même convention : 0 tout est passé, 1 avertissements seulement, 2 erreurs de validation, 3 erreur de syntaxe dans le script. Le rapport sort en JSON, CSV, HTML ou PDF d'audit — l'un pour le pipeline, l'autre pour le client.

le même profil, qui bloque désormais une fusion
# .github/workflows/preflight.yml
- run: pdfl run profiles/offset.pdfl artwork.pdf \
         --output html --output-file report.html \
         --fail-on warning

# 0 ok · 1 warnings · 2 validation errors · 3 syntax error
$ pdfl run profiles/offset.pdfl artwork.pdf
$ echo $?
2

Pensé pour la production

Imprimerie

Le fichier arrive du client et quelqu'un doit vérifier encrage, polices, images et fonds perdus avant le passage sur plaque. Une erreur découverte après coûte le tirage entier.

Un profil par type de papier. pdfl watch valide ce qui arrive dans le dossier surveillé et renvoie un rapport HTML transmissible tel quel.

Édition juridique

Contrats et politiques doivent contenir des clauses obligatoires, ne pas laisser fuir de données personnelles et conserver des métadonnées cohérentes à chaque révision.

Les clauses deviennent des assertions avec vos propres messages d'échec. pdfl compare montre ce qui a changé entre deux révisions du même document.

Industrie réglementée

La notice doit porter les mentions exigées par l'autorité et un code de lot correspondant au lot réellement produit.

text:: vérifie les mentions obligatoires, codes:: décode le Data Matrix imprimé et le compare au jeu de données de production.

Abonnez-vous à PDFLang

La licence est liée au poste : pdfl fingerprint identifie la machine, pdfl license l'active. Le même binaire sur le poste de l'opérateur et sur l'agent de build.

Voir les offres