Php 使用ImageMagick将PDF转换为PNG或JPEG非常慢

Php 使用ImageMagick将PDF转换为PNG或JPEG非常慢,php,imagemagick,image-conversion,Php,Imagemagick,Image Conversion,我有一个使用PHP和ImageMagick的PDF到PNG转换脚本,但转换速度有问题 我知道它是有效的,因为对于一个非常小的PDF文件,转换所需的时间不是很长,但是对于一个250kb的文件(实际上还没有那么大),转换所需的时间超过20分钟 以下是PHP: //***** GET PATH TO IMAGEMAGICK ***** $path_to_imagemagick = trim(`which convert`); //***** PATH TO PDF TO CONVERT *****

我有一个使用PHP和ImageMagick的PDF到PNG转换脚本,但转换速度有问题

我知道它是有效的,因为对于一个非常小的PDF文件,转换所需的时间不是很长,但是对于一个250kb的文件(实际上还没有那么大),转换所需的时间超过20分钟

以下是PHP:

//***** GET PATH TO IMAGEMAGICK *****
$path_to_imagemagick = trim(`which convert`);

//***** PATH TO PDF TO CONVERT *****
$path_to_pdf = getcwd() . "/pdf/myfile.pdf[0]";

//***** PATH TO OUTPUT TO *****
$output_path = getcwd() . "/pdfimage/test_converted.png";

@exec($path_to_imagemagick . " -density 72 -quality 60 -resize 150x " . $path_to_pdf . " " . $output_path);
是否有任何设置可以更改以加快速度


如果有帮助,图像不需要是PNG。如果JPEG的速度更快,我很乐意这样做。

ImageMagick本身根本无法将PDF转换为光栅图像

ImageMagick为此作业使用委托:该委托是Ghostscript。如果您没有在与ImageMagick相同的系统上安装Ghostscript,则通过
convert
进行PDF转换将无法工作

为了提高速度,不要将ImageMagick用于PDF->光栅图像转换。而是直接使用Ghostscript(也可以通过PHP)

用于JPEG输出的命令行:

gs                                 \
  -o ./pdfimage/test_converted.jpg \
  -sDEVICE=jpeg                    \
  -dJPEGQ=60                       \
  -r72                             \
  -dLastPage=1                     \
   pdf/myfile.pdf
PNG输出的命令行:

gs                                 \
  -o ./pdfimage/test_converted.png \
  -sDEVICE=pngalpha                \
  -dLastPage=1                     \
  -r72                             \
   pdf/myfile.pdf 
这两个命令都将提供无标度输出

要缩小输出,可以使用

gs                                 \
  -o ./pdfimage/test_converted.png \
  -sDEVICE=pngalpha                \
  -dLastPage=1                     \
  -r72                             \
  -dDEVICEWIDTHPOINTS=150          \
  -dDEVICEHEIGHTPOINTS=150         \
  -dPDFFitPage                     \
   pdf/myfile.pdf 

另请注意:您对PNG输出命令使用了
-quality 60
设置。但是JPEG的
-quality
和PNG输出的
-quality
与ImageMagick有完全不同的含义(您可能不知道)。有关这方面的详细信息,请参见。

命令行上的转换速度是多少?所有250kb的PDF文件都需要20分钟,还是只有一个特定的PDF文件?这个PDF包含多少页?仔细研究后,似乎只有某些PDF文件是它难以处理的。一些较大的在几秒钟内完成,一些较小的超时。是否存在ImageMagick难以处理的PDF设置?有许多PDF,大多数甚至所有PDF查看器、渲染器或解释器都可能难以处理。。。使用透明和/或阴影的页面区域是一个臭名昭著的功能,可能解释起来很慢另外,正如我在回答中所解释的,处理PDF->图像转换的不是ImageMagick,而是Ghostscript。而较新版本的Ghostscript往往能更好地处理更现代的PDF(如Adobe CS6、Acrobat X、InDesign 5等创建的PDF)——您使用的是哪个版本的Ghostscript?(输出:
gs-v
)如果您能提供(链接到)呈现速度较慢的250kb PDF样本,我可以详细分析。