通过 Spatie\PdfToImage 将 PDF 转换为图像以 FailedToExecuteCommand 'gs' 结束

问题描述 投票:0回答:1

我正在尝试通过 php 和 Spatie\PdfToImage 库从 PDF 文件创建缩略图。 我的代码在这里:

 $pdf = new Pdf(pathToPdf);
 $pdf->setPage(1);
 $pdf->setResolution(10);
 $pdf->saveImage(pathWhenIwantToSaveImage);

没什么特别的。但是我调用 saveImage 方法的行抛出异常并显示以下消息:

FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r72x72' -dPrinted=false  '-sOutputFile=/data/web/virtuals/67726/virtual/tmp/magick-L4e_2y5Q_rBNgFg-6RZhkumzIU9HqfOi%d' '-f/data/web/virtuals/67726/virtual/tmp/magick-KqFqpWJXMJ8NZhb9PwidsJheIlGU3YSa' '-f/data/web/virtuals/67726/virtual/tmp/magick-j7E1hfdmMsgcd0owgFQGhhrgHefC0UX2'' (-1) @ error/delegate.c/ExternalDelegateCommand/519 [] []

我检查了文件路径、文件夹写入/读取权限,一切看起来都正常。

请帮助我解决问题所在。

php pdf
1个回答
0
投票

您正在使用 GhostScript,因此无需使用 Magic 并直接工作,这要简单得多,但您需要直接处理 GhostScript。

Ghostscript 命令可能是特定于平台和应用程序的。很明显,您正在使用由 Magic 驱动的非常旧的命令,这不是必需的。

对于这样一个简单的任务,让我们回顾一下为什么你想要 PNG Alpha 作为缩略图,这不是一个好的终点,因为如此粗略的 JPEG 就可以了,或者 RGB256.png 比 alpha 更清晰、更小。

找到 GhostScript 的安装位置并将所有这些命令精简为:

gs -sDEVICE=png256 -r96 -g96x134 -dPDFFitPage -ooutput.png -dFirstPage=1 -dLastPage=1 -f filename variable

对于所有页面,删除第一页和最后一页指令,并在 -ooutput 中添加 %d。要更改比例,请保留 96,因为这是 Web 画布的理想选择,但将 -g96x134 更改为您想要的像素数。

上述 Stackoverflow 页面的命令如下所示:
enter image description here

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.