PHP7.3使用Imagick将PDF转图片出现UnableToOpenBlob错误如何解决
PHP 7.3 环境下Imagick实现PDF转图片路径报错解决方案
问题复现
在PHP 7.3环境下使用Imagick实现PDF转图片功能时,运行如下代码:
$im = new Imagick(); $im->readimage('test.pdf');
收到报错信息:
Fatal error: Uncaught ImagickException: UnableToOpenBlob 'test.pdf': No such file or directory @ error/blob.c/OpenBlob/3315 in C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\pdf_to_img.php:40 Stack trace: #0 C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\pdf_to_img.php(40): Imagick->readImage('test.pdf') #1 {main} thrown in C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\pdf_to_img.php on line 40
改用绝对路径C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\test.pdf后,再次出现新报错:
调整后的代码:
$im = new Imagick(); $im->readimage('C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\test.pdf');
新报错信息:
Uncaught ImagickException: PDFDelegateFailed `The system cannot find the file specified. ' @ error/pdf.c/ReadPDFImage/794 in C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\pdf_to_img.php:41 Stack trace: #0 C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\pdf_to_img.php(41): Imagick->readImage('C:\\xampp\\htdocs...') #1 {main} thrown in C:\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\pdf_to_img.php on line 41
运行环境
- Windows 10
- XAMPP
- PHP 7.3.27 (cli) (built: Feb 2 2021 20:46:26) ( ZTS MSVC15 (Visual C++ 2017) x64 )
- 线程安全(Thread Safety)已启用
- 架构为x64
解决方法
该问题由Windows系统路径反斜杠转义规则导致,仅需要对路径首尾段的反斜杠进行转义即可,调整后代码如下:
$im->readimage("C:\\xampp\htdocs\My codes\cURLs\php-curl-class\PDFs\\test.pdf");
内容的提问来源于stack exchange,提问作者Siya
相关产品推荐
相关产品推荐

