使用 imagemagick 生成 PDF 缩略图有时渲染颜色不正确。我们使用的是旧版本的 imagemagick(6.5.7-8,这是安装在 heroku 服务器上的版本)。这是我们当前使用的命令:
convert \
-size "725x1200>" \
-colorspace RGB \
-flatten \
-density 300 \
-quality 100 \
input.pdf \
output.jpg
我尝试过使用不同的色彩空间,如 sRGB、YIQ 等,但它们都无法正确呈现颜色。
在本地使用 imagemagick-6.7.7-6 是可行的,因此我尝试在我的应用程序 /bin 目录中捆绑“convert”命令,该命令有效,但结果仍然错误,所以问题似乎来自“convert”使用的另一个 imagemagick 命令或来自另一个库。
以下是输出的一个示例:
- 正确输出:在左边
- 错误输出:在右侧
奇怪的是,对于同一 pdf 的某些页面,输出总是正确的。知道哪个库或命令可能是问题所在吗,或者是否有一组适当的选项可以传递给 imagemagick 以始终正确输出?
答案1
经过进一步调查,问题似乎出在 ghostscript 上,因为它缺少该-dUseCIEColor
选项。从我在网上收集到的信息来看,无法通过 imagemagick 将参数传递给 ghostscript。不过,可以使用管道同时调用这两个命令:https://stackoverflow.com/questions/653380/converting-a-pdf-to-png
我的具体用例
这有点具体到我的用例,但我想有人可能会感兴趣。当我们在 rails 应用程序中通过 Paperclip 生成缩略图时,我创建了一个新的 paperclip 处理器来处理 pdf 到 jpg 的转换,然后 imagemagick 接管执行通常的调整大小操作。我的代码和示例如下:https://gist.github.com/3059321