v0.6.0 · .pdfl 言語 + pdfl CLI

PDF のチェックリストを、実行できるコードに。

PDFLang は、画面を見ながら人が追うチェックリストを、バージョン管理できるスクリプトに置き換えます。総インキ量、フォントの埋め込み、必須条項、バーコード、個人情報 — 一度宣言すれば、すべてのファイルで、ターミナルでも CI でも検証されます。

profiles/offset.pdfl — オフセット印刷のプリフライトプロファイル
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
の関数
7
の名前空間
12
の CLI コマンド
8
言語のドキュメント

7 つの名前空間、1 つの言語

名前空間ごとに扱う問題の種類が分かれています。必要なものだけを使えば十分です。codes:: に触れないスクリプトは、ページの走査コストを負担しません。

prepress:: 30 関数

製版

正確な総インキ量、版の分解、特色、リッチブラック、ヘアライン、フォント置換、最小級数、各種ボックスと塗り足し。刷版が教えてくれるはずだったことを、刷版の前に。

text:: 25 関数

テキスト

抽出、正規化、正規表現による検索、そしてファイルに実際に入っている内容の検証。個人情報の検出も含みます。

struct:: 23 関数

構造

ファイルそのもの — メタデータ、XMP、内部オブジェクト、暗号化と権限、ハッシュ。その PDF が名乗るとおりのものかどうかに答えます。

fix:: 19 操作

正規化

ボックス、ページの回転と並び、透かし、結合と分割、最適化。新しい PDF を書き出し、元のファイルには一切手を触れません。

visual:: 16 関数

画像

実効解像度、品質、知覚ハッシュ、2 つの版の SSIM 比較。100% 表示では目が通してしまう低解像度のロゴを捕まえます。

codes:: 13 関数

バーコード

EAN、UPC、Code 128/39、ITF、QR コード、Data Matrix、Aztec、PDF417 を検出・デコードし、読み取った内容が本来あるべき値と一致するかを確認します。

data:: 8 関数

外部データ

文書の内容を、自社の用語集・データセット・参照テーブルと突き合わせます。ロット番号、品番、承認済み用語など。

スクリーンショットではなく、終了コードで

検証系のコマンドはすべて同じ規約に従います。0 合格、1 警告のみ、2 検証エラー、3 スクリプトの構文エラー。レポートは JSON・CSV・HTML・監査用 PDF から選べます — パイプライン向けと、顧客向けに。

同じプロファイルで、マージを止める
# .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

現場のために書かれています

印刷会社

客先からファイルが届き、刷版に回す前に誰かがインキ量・フォント・画像・塗り足しを確認しなければならない。後から見つかった不備は、刷り部数まるごとの損失になる。

用紙ごとに 1 つのプロファイル。pdfl watch がホットフォルダに届いたファイルを検証し、そのまま転送できる HTML レポートを返します。

法務系出版

契約書や規程には必須条項が含まれていなければならず、個人情報が漏れてはならず、改訂を重ねてもメタデータの整合が保たれている必要がある。

条項はそのまま、自分の書いた失敗メッセージ付きのアサーションになります。pdfl compare は同一文書の 2 つの改訂版の差分を示します。

規制産業の製造

添付文書には規制当局が要求する文言と、実際に製造しているロットと一致するロットコードが必要になる。

text:: が必須の文言を確認し、codes:: が印刷された Data Matrix をデコードして製造データセットと照合します。

PDFLang を購読する

ライセンスは端末単位です。pdfl fingerprint が端末を識別し、pdfl license が有効化します。オペレーターの端末でも、ビルドエージェントでも、同じバイナリです。

プランを見る