我正在使用 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/