gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:23:14 25 4
gpt4 key购买 nike

我有一个使用 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 使用委托(delegate) 来完成这项工作:该委托(delegate)是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 的含义完全不同(您可能没有意识到)。另见 this answer有关此的一些详细信息。

关于php - 使用 ImageMagick 将 PDF 转换为 PNG 或 JPEG 非常非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com