我有一个使用 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 转换为光栅图像at all.
ImageMagick 使用delegate对于这项工作:该代表是鬼脚本。如果您没有在与 ImageMagick 相同的系统上安装 Ghostscript,则 PDF 转换将通过convert
行不通的。
为了提高速度,请勿使用 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
另请注意:你用了一个-quality 60
PNG 输出命令的设置。但-quality
对于 JPEG 和-quality
对于 PNG 输出来说,ImageMagick 确实具有完全不同的含义(您可能没有意识到)。也可以看看这个答案有关于此的一些详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)