php - 将 pdf 的第一页转换为 jpg 时收到无效文件名错误

标签 php pdf imagemagick imagick hhvm

我正在使用 imagick 在脚本中将 pdf 转换为 jpg...如果我在没有指定页面的情况下提供上传的 pdf 的直接路径,它工作正常,但是当我添加 [ 0] 到文件路径的末尾以指定我只想读取第一页,它因以下错误而爆炸:

"Fatal error: Uncaught exception 'ImagickException' with message 'Invalid filename provided' Imagick->readImage()"

我也尝试过直接在构造函数中使用 '/path/to/file.pdf[0]' 但没有成功,但没有页面说明符,也可以正常工作。

根据文档...这应该可行。我在这里做错了什么?

$doc_preview = new Imagick();
$doc_preview->setResolution(180,180);
$doc_preview->readImage('/path/to/file.pdf[0]');
$doc_preview->setImageFormat('jpeg');
$doc_preview->writeImage('/path/to/file.jpg');
$doc_preview->clear();
$doc_preview->destroy();

更新:我应该提到我正在使用 HHVM。不确定在这种情况下这会有所不同......但我是。

更新 2:我已经打开了 an issue在 HHVM github repo 上。希望他们能修复这个错误……在那之前,我在下面标记为正确的答案是一个不错的(尽管有点老套)解决方法。

最佳答案

好的...所以在我的情况下解决这个问题的(有点古怪的)方法是使用 fopen() 然后使用 setIteratorIndex(0) 这是非常不直观。但是对于那些有同样问题的人......好了!

$pdf_handle = fopen('/path/to/file.pdf', 'rb');

$doc_preview = new Imagick();
$doc_preview->setResolution(180,180);
$doc_preview->readImageFile($pdf_handle);
$doc_preview->setIteratorIndex(0);
$doc_preview->setImageFormat('jpeg');
$doc_preview->writeImage('/path/to/file.jpg');
$doc_preview->clear();
$doc_preview->destroy();

关于php - 将 pdf 的第一页转换为 jpg 时收到无效文件名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286358/

相关文章:

php - 更改具有相同文件名的 <img> src attr 时的缓存问题

javascript - 我怎样才能知道使用 java 脚本的 pdf 的尺寸,并拍摄它的快照以显示在网页上?

iphone - iOS:使用从 PDF 创建的图像并用作背景后获取 "Received memory warning"

python - ImageMagick:使用最大文件大小缩放 PNG 图像

c - MagickCore - 卡在 ReadImage 之后

php - pdf 缩略图 imagemagick php 不工作

php - 为什么, fatal error : Class 'PHPUnit_Framework_TestCase' not found in . ..?

javascript - FPDF - 使用 PDF_JS 时在没有对话框的情况下打印

PHP 和 JavaScript Ajax : how to get URL data when our method is "GET"

Python-报告实验室 : Error using custom font