PHP Imagick在Laravel 8中无法处理PDF文件,简单的ImagickException

m1m5dgzv  于 2023-02-05  发布在  PHP
关注(0)|答案(2)|浏览(152)

我第一次尝试使用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
  • windows 11
  • XAMPP公司
  • PHP版本8.0.7
    • phpinfo():**
  • 编译器Visual C++2019
  • 体系结构x64
  • imagick模块版本3.5.1
  • 使用ImageMagick版本ImageMagick 7.0.7 - 11第16季度x64编译的图像2017 - 11 - 23
  • 使用ImageMagick库版本的Imagick 7.0.7 - 25 Q16 x64 2018 - 03 - 04
  • ImageMagick发布日期2018年3月4日
  • ImageMagick支持的格式数量:240

有人能帮忙吗?

rsl1atfo

rsl1atfo1#

Imagick有一个候选版本可以修复这个错误。我们在升级到Laravel 8后也遇到了同样的问题。
新的候选版本发布于2021年11月10日(发布后6天)。https://windows.php.net/downloads/pecl/releases/imagick/3.6.0rc1/

nnt7mjpx

nnt7mjpx2#

下面是代码行:

if ($request->has('pdf_file')) 
        {
            $getPdfFile = $request->file('pdf_file');

            $originalname = $getPdfFile->getClientOriginalName();

            $path = $getPdfFile->storeAs('PdfToJpg', $originalname);
        }

        $storagePath = storage_path('app/PdfToJpg/' . $originalname);

         $imagick = new Imagick();

        $imagick->setResolution(600, 600);

        $imagick->readImage($storagePath);

        $imagick->writeImage(storage_path('app/PdfToJpg/download.jpeg'));

还有

C:\Program Files\gs\gs10.00.0\bin

并将gswin64.exe重命名为gs.exe并添加环境变量

C:\Program Files\gs\gs10.00.0\bin

我运行在php 7.4,幽灵脚本10.0和Imagick的ImageMagick-7.1.0-Q16和laravel 7* 谢谢。

相关问题