【问题标题】:Sample code error to convert PDF to PNG using ImageMagick使用 ImageMagick 将 PDF 转换为 PNG 的示例代码错误
【发布时间】:2020-07-06 09:02:32
【问题描述】:

我在下面有一个示例代码来读取 PDF 文档并转换为 PNG。但是我得到了下面的错误。

致命错误:未捕获的 ImagickException: PDFDelegateFailed `系统 找不到指定的文件。 ' @error/pdf.c/ReadPDFImage/794 在 C:\laragon\www\test\pdf2png.php:3 堆栈跟踪:#0 C:\laragon\www\test\pdf2png.php(3): Imagick->__construct('C:/laragon/www/...') #1 {main} 投入 C:\laragon\www\test\pdf2png.php 在第 3 行

<?php

$imagick = new Imagick('C:/laragon/www/test/ticket.pdf[0]');
$imagick->setImageFormat( 'png' );
file_put_contents('ticket.png', $imagick);

?>

【问题讨论】:

  • 看起来很简单。您传递的路径和文件不存在。文件扩展名中的.pdf[0] 有点可疑。
  • 我怀疑那些愚蠢的 Windows 路径让 ImageMagick 感到困惑,特别是 C:/ 的东西。只是为了测试,尝试将 PDF 复制到脚本执行的目录。
  • @Dave .pdf[0] 是多页 pdf 的第一页
  • 但它是一个真实的文件还是你试图告诉 Imagick 提取第一页?
  • @MarkSetchell 是的,ticket.pdf其实是在脚本执行的目录下,C:/laragon/www/test/ticket.pdf

标签: php imagemagick imagemagick-convert


【解决方案1】:

AS @Mark Setchell 说对同一文件夹中的文件进行处理以查看它是否有效。

也试试这个:

//$imagick = new Imagick("C:/laragon/www/test/ticket.pdf[0]");
$imagick = new Imagick("ticket.pdf[0]");
$imagick->setImageFormat( 'png' );
$imagick->writeImage('ticket.png');

【讨论】:

  • 我试过并得到错误“致命错误:未捕获的 ImagickException:UnableToOpenBlob 'ticket.pdf':C:\laragon\www 中没有这样的文件或目录@error/blob.c/OpenBlob/3315 \test\pdf2png.php:3 堆栈跟踪:#0 C:\laragon\www\test\pdf2png.php(3): Imagick->__construct('ticket.pdf[0]') #1 {main} throw in C:\laragon\www\test\pdf2png.php 在第 3 行"
  • 我刚刚测试了我的代码,它适用于我。第 3 行是 writeImage 吗?
  • 我刚刚更正了我的代码以与您的代码相似,但我仍然得到同样的错误。你把ticket.pdf放在哪里?在 C:\laragon\www\test 下?
  • ticket.pdf 和 pdf2png.php 在同一个文件夹中。
  • 是的,这里也一样。嗯……这很奇怪。
猜你喜欢
  • 2011-02-21
  • 2016-08-21
  • 1970-01-01
  • 2020-05-31
  • 2018-03-16
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 2012-09-15
相关资源
最近更新 更多