v0.6.0 · .pdfl 言語 + pdfl CLI
PDFLang は、画面を見ながら人が追うチェックリストを、バージョン管理できるスクリプトに置き換えます。総インキ量、フォントの埋め込み、必須条項、バーコード、個人情報 — 一度宣言すれば、すべてのファイルで、ターミナルでも CI でも検証されます。
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(", ")}" } }
名前空間ごとに扱う問題の種類が分かれています。必要なものだけを使えば十分です。codes:: に触れないスクリプトは、ページの走査コストを負担しません。
正確な総インキ量、版の分解、特色、リッチブラック、ヘアライン、フォント置換、最小級数、各種ボックスと塗り足し。刷版が教えてくれるはずだったことを、刷版の前に。
抽出、正規化、正規表現による検索、そしてファイルに実際に入っている内容の検証。個人情報の検出も含みます。
ファイルそのもの — メタデータ、XMP、内部オブジェクト、暗号化と権限、ハッシュ。その PDF が名乗るとおりのものかどうかに答えます。
ボックス、ページの回転と並び、透かし、結合と分割、最適化。新しい PDF を書き出し、元のファイルには一切手を触れません。
実効解像度、品質、知覚ハッシュ、2 つの版の SSIM 比較。100% 表示では目が通してしまう低解像度のロゴを捕まえます。
EAN、UPC、Code 128/39、ITF、QR コード、Data Matrix、Aztec、PDF417 を検出・デコードし、読み取った内容が本来あるべき値と一致するかを確認します。
文書の内容を、自社の用語集・データセット・参照テーブルと突き合わせます。ロット番号、品番、承認済み用語など。
検証系のコマンドはすべて同じ規約に従います。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 をデコードして製造データセットと照合します。
ライセンスは端末単位です。pdfl fingerprint が端末を識別し、pdfl license が有効化します。オペレーターの端末でも、ビルドエージェントでも、同じバイナリです。