【问题标题】:Finding color spaces in PDF from linux command line从 Linux 命令行查找 PDF 中的颜色空间
【发布时间】:2015-08-07 23:47:07
【问题描述】:

我需要检查给定的 PDF 文件是否完全在 CMYK 颜色空间中。您可能知道,打印需要它。

目前,它是使用 Adob​​e 的 GUI 应用程序完成的,但这需要很长时间,我们需要使用 linux 脚本来自动化它。

我测试了许多库,但每个库都给了我无效的结果或不支持更新的 PDF 规范。

  • 我在ghostscript 中没有找到解决方案
  • 从 pdf 导出图像不是很好的解决方案,因为还有路径和其他媒体,也需要验证。
  • identify -verbose 给出的结果无效(色彩空间不好,但 DPI 也不好)。

据我所知,PDF 可以为文档中的元素提供不同的色彩空间,我想检查 每个 元素是否为 CMYK。

【问题讨论】:

    标签: linux image pdf


    【解决方案1】:

    您可以通过pdfimages

    pdfimages -list filename.pdf
    

    对于带有 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%
    

    如果所有图像都使用 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%
    

    【讨论】:

    • 此解决方案似乎仅显示有关文档中包含的光栅图形的信息,而原始问题不包括此类约束。 PDF文档一般包括矢量图形或一些原始格式生成的文本,如矢量图绘制工具或文本处理工具。
    • 此解决方案不起作用。 pdfimages 需要一些其他参数 image-root。当我提供它时,它不会输出任何东西。
    【解决方案2】:

    从编码的角度来看,您需要使用一种工具来渲染 PDF 文档中的每一页,但不是实际绘制东西,而是需要在每个 PDF 绘图命令上调用瓶颈。

    从那里您需要拦截所有颜色运算符、所有 gstate 运算符、所有图像运算符并递归所有 Form XObjects 并标记所有不是 CMYK 的内容。请注意,某些颜色空间会很棘手,例如,您可以有一个调色板颜色空间,它在后台使用 CMYK ICC 颜色空间。您还可能遇到应用将颜色设置为 RGB 颜色,从不标记页面,然后在标记之前切换到 CMYK 的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 2017-03-21
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2017-06-06
      • 2013-07-10
      相关资源
      最近更新 更多