v0.6.0 · .pdfl 语言 + pdfl 命令行
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,原文件绝不改动。
有效分辨率、质量、感知哈希,以及两个版本之间的 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
客户文件送来后,得有人在上版前核对墨量、字体、图像和出血。事后才发现的问题,赔进去的是整批印量。
每种纸张一份配置。pdfl watch 校验落入热文件夹的文件,并生成可以直接转发的 HTML 报告。
合同和政策文本必须包含必备条款,不能泄露个人信息,并且每次修订都要保持元数据一致。
条款直接变成断言,失败信息由你自己撰写。pdfl compare 展示同一文档两个修订版之间的差异。
说明书必须载有监管机构要求的文字,以及与实际生产批次相符的批号。
text:: 核对必备表述,codes:: 解码印刷的 Data Matrix,并与生产数据集比对。