在 php 中无法通过 imagick 将 pdf 转换为图像

Failed to convert pdf to image by imagick in php

这是异常跟踪:

Postscript 委托失败`[ghostscript 库 8.70] -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits= 4 -dGraphicsAlphaBits=4 '-r72x72' '-sOutputFile=/tmp/magick-17649SdGWHr3z3794%d' '-f/tmp/magick-17649w9uyEgynEd2e' '-f/tmp/magick-17649t0lFMpipemUo'':错误:/typecheck in --运行-- 操作数栈:--dict:11/11(L)-- --dict:11/11(L)-- --dict:11/11(L)-- --nostringval-- --nostringval -- --nostringval-- --nostringval-- --nostringval-- 执行堆栈:%interp_exit .运行exec2 --nostringval-- --nostringval-- --nostringval-- 2 % stopped_push --nostringval-- --nostringval-- --nostringval-- 假 1 %stopped_push 1862 1 3 %oparray_pop 1861 1 3 %oparray_pop 1845 1 3 % oparray_pop --nostringval-- --nostringval-- 2 1 1 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- % array_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- 字典堆栈:--dict:1142/1684(ro)(G)--字典:1/20(G)-- --字典:75/200(L)-- --字典:75/200(L)-- --字典:106/127(ro)(G)-- --dict:286/300(ro)(G)-- --dict:22/25(L)-- --dict:4/6(L) -- --dict:25/40(L)-- 当前分配模式是本地 GPL Ghostscript 8.70: 不可恢复的错误,退出代码 1 @ error/ghostscript-private.h/InvokeGhostscriptDelegate/171

这是我的 php

if (file_exists($pdf_path)) {
    try {
        $image = new Imagick($pdf_path);
        $image->readImage($pdf_path);
        $totalPage = $image->getNumberImages();
    } catch (ImagickException $e) {
        throw $e;
    }
}

任何想法将不胜感激

从一些类似的错误报告来看,当 PDF 不太有效时,似乎会发生此类错误:

您或许可以通过使用像这样的在线 PDF 验证器来确认这一点:

https://www.pdf-online.com/osa/validate.aspx

如果它无效,具体该怎么办并不明显。如果 PDF 是由您控制的某些东西生成的,您可以修复生成无效 PDF 的任何内容。如果它是一个 user-supplied 文件,你可以尝试用类似的东西修复它:https://pdf.recoverytoolbox.com/