【发布时间】:2018-05-30 19:36:56
【问题描述】:
我正在尝试从 PDF 转换为 TIFF,并同时保持 CMYK 颜色空间和 PDF 中的透明区域。有很多帖子说“只使用 PNG”,但对于我的应用程序来说,CMYK 颜色空间是必须的,而且 PNG 不支持 CMYK。我开始使用 Imagemagick (IM) 进行这项工作,并取得了有限的成功,但到目前为止直接使用 Ghostscript 取得了更好的结果(这就是 IM 在幕后使用的东西)。不断出现的问题是 PDF 中的透明区域被白色填充。
上下文: Ubuntu 16.04.3 LTS (AWS)、Ghostscript 9.23、ImageMagick 7.0.7-36
我创建了一个测试 PDF,它具有透明背景和重叠的纯色和半透明色块: trans-test.pdf
我已验证 PDF 具有正确的透明区域。如果我使用 PNG(因此使用 RGB 颜色空间),我得到的结果图像具有与 PDF 匹配的透明区域,但是,唉,错误的颜色空间: output.png
(请记住:网络浏览器会以白色背景显示它,但它确实是透明的)
对于转换,我尝试了以下命令的变体(为发布而简化):
Imagemagick:
convert -depth 8 -colorspace CMYK trans-test.pdf output.tif
鬼脚本:
gs -sDEVICE=tiff32nc -sOutputFile=output_gs.tif -r144 trans-test.pdf
在 IM 中,处理 CMYK PDF 的代理使用 pamcmyk32 设备。有些人建议将其更改为 pngalpha ,但这会强制对 RGB 颜色空间进行不必要的更改。有些人建议先转换为 PNG,然后再转换回 CMYK,但这会导致颜色数据丢失。
直接使用 Ghostscript,TIFF 的任何设备选项都没有任何透明度选项。在挖掘了一段时间后,我发现了来自 Artifex (KenS) 开发人员的旧帖子回复,指出“至于 TIFF,GS 不支持使未标记区域透明”。: Conversion...does not maintain transparency
这令人沮丧,但这是从 2011 年开始的,所以我希望现在有一些解决方法可以解决这个问题。我正在寻找对 Ghostscript 的一些配置更改,这将使我能够将所有未标记的区域设置为透明,或者让它从一个被擦除为透明而不是白色的页面开始。
TIFF 文件格式同时支持 CMYK 颜色空间和透明度,因此必须有一种方法可以将两者放在同一个文件中。在这一点上,任何关于如何在 TIFF 中获取两者的见解都将受到欢迎。感谢阅读。
【问题讨论】:
-
据我所知,Ghostscript 仍然不会处理 CMYK 颜色空间中的透明度。在阅读 PDF 之前,您可以使用 ImageMagick 使用 -colorspace sRGB(它使用 Ghostscript)将 CMYK PDF 转换为 sRGB,然后在完成此操作后,您可以通过在输出 TIFF 之前将配置文件从 sRGB 添加到 CMYK 来转换为 tiff。
magick -colorspace sRGB -density XX image.pdf -profile path/to/sRGB.icc -profile path/to/USWebCoatedSWOP.icc image.tiff -
感谢弗雷德的回复。我是你剧本的忠实粉丝。我绝不是色彩空间方面的专家,但我在这个项目上与一位专家合作。据我了解,从 CMYK 转换为 RGB 再转换回 CMYK 会导致颜色数据退化。如果我按照您建议的流程进行操作,不会发生这种情况吗? -谢谢
-
只是因为使用了 -colorspace sRGB 而不是配置文件。但是由于您的输入是 CMYK pdf,它是否有配置文件。如果没有配置文件,则您的 CMYK 颜色未明确定义为可在所有查看平台上重现。你真的需要有个人资料。您的 PDF 是否包含光栅图像?如果是这样,那么最好使用 pdfimages 从 PDF 中提取图像并从那里进行处理,尤其是在光栅图像具有内置配置文件的情况下。试试我的命令,看看有多大的不同。或者发布你的 PDF,我可以试试。
-
我刚刚进行了一些颜色测试,在其中进行了从 CMYK -> sRGB ->CMYK 的转换。正如预期的那样,我得到的是个别颜色的一些轻微漂移。我认为它们并没有那么重要,但我的共同开发者认为它们足以引起人们的关注,可以尝试避免转换链。看起来我可能不得不从@KenS 回到 cmets 并尝试让 Ghostscript 跳过 PDF 转换的白色填充部分。除非我能解决这个问题,否则与 IM 或 Ghostscript 相关的任何事情都会有同样的问题。
-
您的 CMYK -> sRGB ->CMYK 使用了什么类型的图像。您只是使用 -colorspace 还是使用了配置文件。 ImageMagick 在光栅图像和配置文件方面做得很好。由于 Ghostscript 的限制,如果 PDF CMYK 文件具有透明度,则会出现问题。
标签: pdf imagemagick ghostscript tiff cmyk