我需要检查给定的 PDF 文件是否完全在 CMYK 色彩空间中。您可能知道,打印需要它。
目前,它是使用 Adobe 的 GUI 应用程序完成的,但这需要很多时间,并且我们需要使用 Linux 脚本来自动化它。
我测试了许多库,但每个库都给了我无效的结果或不支持更新的 PDF 规范。
ghostscript
identify -verbose
给出无效的结果(糟糕的色彩空间,而且也糟糕的 DPI)。据我所知,PDF 文档中的元素可以有不同的颜色空间,我想检查每个元素是否都是 CMYK。
您可以通过pdfimages执行此操作:
pdfimages -list filename.pdf
Run Code Online (Sandbox Code Playgroud)
对于包含 CMYK 图像的文件,输出类似于:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 5197 6732 cmyk 4 8 jpeg no 5 0 600 601 32.3M 24%
1 1 mask 5197 6732 - 1 1 jpeg no 5 0 600 601 32.3M 775%
Run Code Online (Sandbox Code Playgroud)
如果所有图像都使用 ICC 配置文件,则输出类似于:
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 5197 6732 icc 3 8 jpeg no 8 0 600 601 7080K 6.9%
1 1 mask 5197 6732 - 1 1 jpeg no 8 0 600 601 7080K 166%
Run Code Online (Sandbox Code Playgroud)
从编码的角度来看,您需要使用一个工具来渲染 PDF 文档中的每个页面,但它需要调用每个 PDF 绘图命令的瓶颈,而不是实际绘制内容。
从那里,您需要拦截所有颜色运算符、所有 gstate 运算符、所有图像运算符,并在所有 Form XObject 上递归并标记所有非 CMYK 的内容。请注意,某些颜色空间会很棘手,例如您可以拥有一个在幕后使用 CMYK ICC 颜色空间的调色板颜色空间。您还可能遇到这样的情况:应用程序将颜色设置为 RGB 颜色,从不标记页面,然后在标记之前切换到 CMYK。
归档时间: |
|
查看次数: |
4064 次 |
最近记录: |