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

时间:2018-05-30 19:36:56

标签: pdf imagemagick ghostscript tiff cmyk

我正在尝试从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

Ghostscript的: 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中获得内容的见解都将受到欢迎。谢谢你的阅读。

2 个答案:

答案 0 :(得分:1)

需要一些创造性的解决方案来解决委托限制 - 正如评论中所指出的那样。

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

# Create transparent mask (we don't care about colorspace, just grab the alpha channel values)
convert -depth 8 -colorspace sRGB trans-test.pdf -alpha Extract mask.png
# Apply mask _after_ enabling alpha channel
convert \( \
        -depth 8 \
        -colorspace CMYK \
        trans-test.pdf \
        -alpha Activate \
    \) \
    mask.png -compose CopyAlpha -composite output.tif

-alpha Activate启用了Alpha通道,但没有数据,所以一切都是透明的。在mask.png -compose CopyAlpha -composite之后,使用从上一个操作中提取的值填充Alpha通道。

Example output with CMYKA

答案 1 :(得分:1)

我将我的解决方案与emcconville的解决方案进行了比较。他的方法应该很好,但我的配置文件解决方案似乎在Mac OSX Sierra Preview,GraphicConverter和Photoshop中显示的保存的tif文件中更好地匹配颜色。以下命令是IM 7.0.7.37 Q16 HDRI和LIBTIFF版本4.0.9 Ghostscript 9.23中的unix语法。您可以在echo "$( cat file1; sleep 3 >/dev/null & cat file2 )" 找到您的版本。

输入: trans-test.pdf

我的解决方案:

magick -list format

trans-test_profile.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

trans-test_mask.tif

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

以下是我的代表:

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