我有一个简单的脚本可以将pdf文件转换为png文件。
它基本上运行此convert
命令:
convert -strip -quiet -quality 100 -alpha off -density 165% -scene 1 -colorspace sRGB "/data/input.pdf" "/output/image.png"
但是我有一个特殊的pdf文件,其白色背景如下:
结果如下:
您可以看到白色背景变为黑色。
我只需将参数切换为-colorspace cmyk
我在文件上运行identify
,但未指示cmyk
> identify /data/input.pdf
/data/input.pdf PDF 1920x1080 1920x1080+0+0 16-bit sRGB 2.07246MiB 0.000u 0:00.000
我的问题是:
我如何知道何时使用sRGB空间(在此文件出现之前有效)以及何时使用cmyk?
修改
ImageMagick版本信息
> convert --version
Version: ImageMagick 6.9.9-19 Q16 x86_64 2017-10-24 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC OpenMP
Delegates (built-in): bzlib djvu fontconfig freetype gvc jbig jng jpeg lcms lqr lzma openexr png tiff wmf x xml zlib
这是复制我的开发环境的dockerfile:
FROM ubuntu:16.04
RUN apt-get update --fix-missing
RUN apt-get install -y libmagickwand-dev wget
WORKDIR '/src'
ENV IMAGEMAGICK_VERSION 6.9.9-19
RUN wget --no-check-certificate https://github.com/ImageMagick/ImageMagick/archive/${IMAGEMAGICK_VERSION}.tar.gz -O ${IMAGEMAGICK_VERSION}.tar.gz && \
tar -zxvf ${IMAGEMAGICK_VERSION}.tar.gz && \
cd ImageMagick-${IMAGEMAGICK_VERSION} && \
./configure && \
make && \
make install && \
ldconfig /usr/local/lib
WORKDIR /
COPY *.pdf /
COPY *.sh /
可以在此处找到完整的文件集:https://github.com/kongakong/StackoverflowCode/tree/convert-pdf-imagemagic/imagemagick/46900660
答案 0 :(得分:1)
行。我已下载您的PDF文件。您的文件是sRGB。它具有透明度。如果使用-alpha off关闭透明度,它将具有黑色背景,因为在这种情况下透明度是透明的黑色,即rgb(0,0,0,0)。如果您想要白色背景,则必须将结果展平为白色背景。所以这对我来说很好。
convert -quiet -density 165 -colorspace sRGB color-p9.pdf[0] -background white -flatten color-p9.png
使用png输出对我有用但文件太大而无法发布。所以我把它转换成jpg,只是为了显示在这里。您可以在系统上使用png输出,并根据我在上一篇文章中描述png质量的链接设置质量。
答案 1 :(得分:0)
您的输入示例是JPG而不是PDF。你可以把原始的pdf作为链接发布吗?
如果您不想使用配置文件,那么您应该在阅读输入PDF之前使用-colorspace sRGB转换为sRGB。如果图像是CMYK,那么它将转换为SRGB。如果它已经是sRGB,那么把它放在那里并没有什么坏处。
请注意,PNG输出的质量与JPG不同。所以你需要的价值观是不同的。它也应该在阅读PDF之后放置,因为它适用于输出。见http://www.imagemagick.org/script/command-line-options.php#quality
此外,密度未指定百分比。它是dpi(或dotspercentimeter)的数值。因此,如果你想确定,应该指定单元。
此外,如果您的PDF具有透明度,并且您关闭alpha,则背景会变黑,因为透明是透明的黑色。
类似于:
convert -quiet -density 165 -colorspace sRGB "/data/input.pdf[0]" -alpha off -quality XX "/output/image.png"
我已将页面ID添加为[0]到PDF以获取第一页而不是使用-scene。要么应该没问题。如果需要,可以添加-strip,但是在阅读PDF之后。
如果您想查看PDF文件的颜色空间,则应在处理之前进行检查。
convert image.pdf -format "%[colorspace]" info:
请参阅http://www.imagemagick.org/script/escape.php
您还可以使用以下方式检查个人资料:
convert image.pdf -format "%[profiles]" info:
以及
convert image.pdf -format "%[profile:icc]" info:
convert image.pdf -format "%[profile:icm]" info: