使用CMYK和透明度将PDF转换为Tiff

使用CMYK和透明度将PDF转换为Tiff,pdf,imagemagick,ghostscript,tiff,cmyk,Pdf,Imagemagick,Ghostscript,Tiff,Cmyk,我正在尝试从PDF转换为TIFF,并维护PDF中的CMYK颜色空间和透明区域。有很多帖子说“只使用PNG”,但对于我的应用程序来说,CMYK颜色空间是必须的,PNG不支持CMYK。我开始使用Imagemagick(IM)进行这项工作,虽然取得了有限的成功,但到目前为止,直接使用Ghostscript(这是IM在引擎盖下使用的)效果更好。不断出现的问题是PDF中的透明区域被白色填充 背景: Ubuntu 16.04.3 LTS(AWS),Ghostscript 9.23,ImageMagick 7

我正在尝试从PDF转换为TIFF,并维护PDF中的CMYK颜色空间和透明区域。有很多帖子说“只使用PNG”,但对于我的应用程序来说,CMYK颜色空间是必须的,PNG不支持CMYK。我开始使用Imagemagick(IM)进行这项工作,虽然取得了有限的成功,但到目前为止,直接使用Ghostscript(这是IM在引擎盖下使用的)效果更好。不断出现的问题是PDF中的透明区域被白色填充

背景: Ubuntu 16.04.3 LTS(AWS),Ghostscript 9.23,ImageMagick 7.0.7-36

我创建了一个测试PDF,它有一个透明的背景和重叠的实心和半透明颜色块:

我已经确认PDF有正确的透明区域。如果我使用PNG(以及RGB颜色空间),我得到的结果图像具有与PDF匹配的透明区域,但是,唉,错误的颜色空间:

(请记住:web浏览器将以白色背景显示它,但它确实是透明的)

对于转换,我尝试了以下命令的变体(简化发布):

Imagemagick:
convert-depth 8-colorspace CMYK trans-test.pdf output.tif

鬼脚本:
gs-sDEVICE=tiff32nc-sOutputFile=output\u gs.tif-r144 trans test.pdf

在IM中,处理CMYK PDF的代理使用pamcmyk32设备。有人建议将其更改为pngalpha,但这会强制对RGB颜色空间进行不必要的更改。有些人建议先转换为PNG,然后再转换回CMYK,但这会导致颜色数据丢失

直接使用Ghostscript TIFF的任何设备选项都没有任何透明度选项。经过一段时间的挖掘,我发现一个来自Artifex(KenS)的开发人员的旧帖子回复说“对于TIFF,GS不支持将未标记区域透明化”

这是令人沮丧的,但它是从2011年开始的,所以我希望到目前为止,这个问题还有一些解决办法。我正在搜索对Ghostscript的一些配置更改,这些更改将使我能够将所有未标记的区域设置为透明,或者让它以将页面擦除为透明而不是白色开始


TIFF文件格式支持CMYK颜色空间和透明度,因此必须有一种方法将两者都放在同一文件中。在这一点上,任何关于如何在TIFF中实现两者的见解都是受欢迎的。感谢阅读。

如评论中所指出的,需要一些创造性的解决方案来绕过学员的限制

我建议将透明度提取到中间遮罩,并在启用CMYKA数据通道后重新应用它

#创建透明遮罩(我们不关心颜色空间,只需获取alpha通道值)
convert-depth 8-colorspace sRGB trans-test.pdf-alpha Extract mask.png
#启用alpha通道后应用遮罩
转换\(\
-深度8\
-色空间CMYK\
trans-test.pdf\
-阿尔法激活\
\) \
mask.png-compose CopyAlpha-composite output.tif
-alpha Activate
打开alpha通道,但是没有数据,所以一切都是透明的。下面的
mask.png-compose CopyAlpha-composite
使用从上一操作中提取的值填充alpha通道


如评论中所指出的,需要一些创造性的解决方案来绕过学员的限制

我建议将透明度提取到中间遮罩,并在启用CMYKA数据通道后重新应用它

#创建透明遮罩(我们不关心颜色空间,只需获取alpha通道值)
convert-depth 8-colorspace sRGB trans-test.pdf-alpha Extract mask.png
#启用alpha通道后应用遮罩
转换\(\
-深度8\
-色空间CMYK\
trans-test.pdf\
-阿尔法激活\
\) \
mask.png-compose CopyAlpha-composite output.tif
-alpha Activate
打开alpha通道,但是没有数据,所以一切都是透明的。下面的
mask.png-compose CopyAlpha-composite
使用从上一操作中提取的值填充alpha通道


我将我的解决方案与emcconville的解决方案进行了比较。他的方法应该是很好的,但我的个人资料解决方案似乎更符合Mac OSX Sierra Preview、GraphicConverter和Photoshop中显示的保存的tif文件的颜色。下面的命令是IM 7.0.7.37 Q16 HDRI和LIBTIFF版本4.0.9 Ghostscript 9.23中的unix语法。您可以从
magick-list格式查看您的版本

输入:

我的解决方案:

magick -depth 8 -colorspace sRGB trans-test.pdf \
-profile /Users/fred/images/profiles/sRGB.icc \
-profile /Users/fred/images/profiles/USWebCoatedSWOP.icc \
trans-test_profile.tif
magick -depth 8 -colorspace sRGB trans-test.pdf -alpha Extract mask.png

magick \( -depth 8 -colorspace CMYK trans-test.pdf \) \
mask.png -alpha off -compose CopyOpacity -composite \
trans-test_mask.tif

emcconville的解决方案:

magick -depth 8 -colorspace sRGB trans-test.pdf \
-profile /Users/fred/images/profiles/sRGB.icc \
-profile /Users/fred/images/profiles/USWebCoatedSWOP.icc \
trans-test_profile.tif
magick -depth 8 -colorspace sRGB trans-test.pdf -alpha Extract mask.png

magick \( -depth 8 -colorspace CMYK trans-test.pdf \) \
mask.png -alpha off -compose CopyOpacity -composite \
trans-test_mask.tif

请注意,-compose copyOpacity或copyAlpha通常需要-alpha关闭。因此,我认为没有任何理由添加-alpha激活

以下是我的代表:

Version: ImageMagick 7.0.7-37 Q16 x86_64 2018-05-30 https://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: https://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP 
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms lqr ltdl lzma openexr png ps raw rsvg tiff webp x xml zlib

我将我的解决方案与emcconville的解决方案进行了比较。他的方法应该是很好的,但我的个人资料解决方案似乎更符合Mac OSX Sierra Preview、GraphicConverter和Photoshop中显示的保存的tif文件的颜色。下面的命令是IM 7.0.7.37 Q16 HDRI和LIBTIFF版本4.0.9 Ghostscript 9.23中的unix语法。您可以从
magick-list格式查看您的版本

输入:

我的解决方案:

magick -depth 8 -colorspace sRGB trans-test.pdf \
-profile /Users/fred/images/profiles/sRGB.icc \
-profile /Users/fred/images/profiles/USWebCoatedSWOP.icc \
trans-test_profile.tif
magick -depth 8 -colorspace sRGB trans-test.pdf -alpha Extract mask.png

magick \( -depth 8 -colorspace CMYK trans-test.pdf \) \
mask.png -alpha off -compose CopyOpacity -composite \
trans-test_mask.tif

emcconville的解决方案:

magick -depth 8 -colorspace sRGB trans-test.pdf \
-profile /Users/fred/images/profiles/sRGB.icc \
-profile /Users/fred/images/profiles/USWebCoatedSWOP.icc \
trans-test_profile.tif
magick -depth 8 -colorspace sRGB trans-test.pdf -alpha Extract mask.png

magick \( -depth 8 -colorspace CMYK trans-test.pdf \) \
mask.png -alpha off -compose CopyOpacity -composite \
trans-test_mask.tif

请注意,-compose copyOpacity或copyAlpha通常需要-alpha关闭。因此,我认为没有任何理由添加-alpha激活

以下是我的代表:

Version: ImageMagick 7.0.7-37 Q16 x86_64 2018-05-30 https://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: https://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP 
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms lqr ltdl lzma openexr png ps raw rsvg tiff webp x xml zlib

据我所知,Ghostscript仍然不会在CMYK颜色空间中处理透明度。在阅读PDF之前,您可以使用ImageMagick使用-colorspace sRGB(使用Ghostscript)将CMYK PDF转换为sRGB,然后在输出之前将配置文件从sRGB添加到CMYK,从而转换为tiff