laravel - PHP Imagick 不适用于 Laravel 8 中的 PDF 文件,简单的 ImagickException
问题描述
我尝试第一次使用 Imagick 将 pdf 文件转换为图像,但它对我不起作用。当我尝试将 Imagick 与图像文件一起使用时,它可以正常工作,问题出在 PDF 文件上。
我的测试 php 控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Imagick;
class NewspaperController extends Controller
{
/**
* @throws \ImagickException
*/
public function show()
{
$imgExt = new Imagick();
$imgExt->readImage(public_path('storage/uploads/test.pdf'));
$imgExt->writeImages(public_path('storage/uploads/pdf_image_doc.jpg'), false);
return view('xxx');
}
}
当我在浏览器中打开它时,我只得到“ImagickException”简单错误。
我在本地工作,有:
- 拉拉维尔 8.54
- 视窗 11
- XAMPP
- PHP 版本 8.0.7
phpinfo():
- 编译器 Visual C++ 2019
- 架构 x64
- imagick 模块版本 3.5.1
- Imagick 编译使用 ImageMagick 版本 ImageMagick 7.0.7-11 Q16 x64 2017-11-23
- Imagick 使用 ImageMagick 库版本 ImageMagick 7.0.7-25 Q16 x64 2018-03-04
- ImageMagick 发布日期 2018-03-04
- ImageMagick 支持的格式数量:240
任何人都可以帮忙吗?
解决方案
Imagick 有一个可修复此错误的候选版本。升级到 Laravel 8 后,我们遇到了同样的问题。
新的候选版本于 2021 年 11 月 10 日发布(发布后 6 天)。 https://windows.php.net/downloads/pecl/releases/imagick/3.6.0rc1/
推荐阅读
- kubernetes - Helm Chart 安装错误:预安装失败:等待条件超时
- ansible - 大规模部署 AWX
- spring-boot - SpringBoot LocalContainerEntityManagerFactoryBean 使池大小翻倍?
- sql - SQL Left Outer Join 未返回左表中的所有行(无 where 子句过滤器)
- java - java 8中最有效的3个字符串连接方式
- angular - 在 IIS 上使用 Windows 身份验证时出现错误 401 未授权
- c - 使用 C 中的字符串的每个第 k 位循环问题
- excel - 如果它尚不存在,如何将 A 列从 sheet1 中的行复制到 sheet2
- javascript - 从函数范围更改变量的值
- reporting-services - 索引超出了 SSRS 中的数组范围