ImageMagick / Ghostscript会覆盖PDF文件的第一页

时间:2015-02-02 16:01:34

标签: php imagemagick ghostscript imagemagick-convert

在我升级到Ghostscript 9.15和ImageMagick 6.9.0-4后,我今天开始有一种奇怪的行为。我试图将一些多页PDF文件转换为多个JPEG文件。

问题是PDF文件的第一页(0 JPG文件)被软件覆盖了PDF文件的最后一页。例如,启动命令:

 convert -verbose -define jpeg0 -thumbnail x400 -flatten \
   -background white /uploads/54b534908aa9b.pdf  \
   /small0115/54b534908aa9b_%d.jpg

除了第一个页面之外,它会得到所有页面,这个页面被最后一个页面取代。

{52}页面PDF文件的-verbose选项输出如下所示:

/uploads/54b534908aa9b.pdf[0] PDF 694x1224 694x1224+0+0 16-bit sRGB 944KB 0.000u 0:00.000
.......
/uploads/54b534908aa9b.pdf[50] PDF 694x1224 694x1224+0+0 16-bit sRGB 944KB 0.000u 0:00.000
/uploads/54b534908aa9b.pdf[51] PDF 694x1224 694x1224+0+0 16-bit sRGB 944KB 0.000u 0:00.000
/uploads/54b534908aa9b.pdf=>/small0115/54b534908aa9b_0.jpg PDF

据我所知,该软件会自动再次写入第一页,但使用最后一页这样做,而不是保持原样。

此问题的解决方法是再次生成文件的第一页,但这只是一种解决方法,而不是程序员可行的解决方案:)

1 个答案:

答案 0 :(得分:0)

尝试此命令:

convert                        \
  -verbose                     \
   /uploads/54b534908aa9b.pdf  \
  -thumbnail x400              \
   /small0115/54b534908aa9b.jpg

生成的文件将自动编号为54b534908aa9b-0.jpg54b534908aa9b-1.jpg54b534908aa9b-2.jpg ... 54b534908aa9b-51.jpg


说明:

  1. 我不明白你的-define jpeg0参数应该达到什么目的。这是一个错字吗?

  2. 此外,-flatten没有任何效果(Ghostscript - 由ImageMagick用于将PDF处理成光栅文件,IM可以处理 - 无论如何都无法处理PDF图层。 )

  3. 同样-background white也没有任何效果:如果PDF页面有彩色背景',则生成的JPEG将具有相同的颜色背景。如果PDF页面具有透明背景(最常用于PDF),则JPEG文件格式无法处理,背景将显示为白色......