为啥 Imagick 类不能将 pdf 文件转换为图像文件?

Posted

技术标签:

【中文标题】为啥 Imagick 类不能将 pdf 文件转换为图像文件?【英文标题】:Why isn't it possible for Imagick class to convert pdf files to image files?为什么 Imagick 类不能将 pdf 文件转换为图像文件? 【发布时间】:2022-01-13 08:54:07 【问题描述】:

我想用 php 将 pdf 文件转换为图像。

我遇到了一些这样的异常:

致命错误:未捕获的 ImagickException:UnableToOpenBlob './sample.pdf':D:\Task\Clients\James\toImage\toImage.php:4 中没有这样的文件或目录@error/blob.c/OpenBlob/3533堆栈跟踪:#0 D:\Task\Clients\James\toImage\toImage.php(4): Imagick->readImage('./sample.pdf') #1 main throw in D:\Task\Clients\ James\toImage\toImage.php 第 4 行

我写了一些代码如下。

<?php
    $pdf_url = ('./sample.pdf');
    $imagick = new Imagick();
    $imagick->readImage($pdf_url);
    $imagick->resizeImage( 200, 200, imagick::FILTER_LANCZOS, 0);
    $imagick->setImageFormat( "png" );
    $imagick->writeImage('pdfAsImage.png');

请帮帮我!

【问题讨论】:

没有这样的文件或目录”听起来文件不存在 为什么是./sample.pdfsample.pdf 怎么了? 你能显示 $pdf_url 的值吗? 【参考方案1】:

这是我以前使用过的代码。 使用图片的完整路径,例如:

$image = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/pdfs/sample.pdf'); 

它应该像魅力一样工作!!!

【讨论】:

非常感谢!你救了我的命!!!

以上是关于为啥 Imagick 类不能将 pdf 文件转换为图像文件?的主要内容,如果未能解决你的问题,请参考以下文章

Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以

PHP Imagick 不适用于 Laravel 8 中的 PDF 文件,简单的 ImagickException

使用 Imagick 转换透明 PDF 文件

PHP Imagick 类 - 将 JPEG 转换为渐进式 JPEG?隔行不工作

在 C# 中使用 imagick 将 .HEIC 转换为 JPEG

用php为imagick设置密度参数