Php imagick将pdf转换为png时出错:Postscript委托失败“/tmp/magick-bpkD9zy7”:@error/pdf.c/ReadPDFImage/663

Php imagick将pdf转换为png时出错:Postscript委托失败“/tmp/magick-bpkD9zy7”:@error/pdf.c/ReadPDFImage/663,php,imagick,Php,Imagick,我需要将多页PDF转换为将在浏览器中显示的PNG系列 此代码适用于: $images = new imagick(); $images->readimage($_FILES['upload']['tmp_name']); $images->setformat('png'); foreach ($images as $pageNumber => $image) { //Save individual images } 但它生成的PNG质量太差

我需要将多页PDF转换为将在浏览器中显示的PNG系列

此代码适用于:

$images = new imagick();
$images->readimage($_FILES['upload']['tmp_name']);
$images->setformat('png');

    foreach ($images as $pageNumber => $image) {
       //Save individual images 
     }
但它生成的PNG质量太差,几乎无法读取

此代码:

$images = new imagick();
$images->setresolution(1024,0);
$images->readimage($_FILES['upload']['tmp_name']);
$images->setformat('png');

    foreach ($images as $pageNumber => $image) {
       //Save individual images 
     }
在readimage上生成以下错误:

Postscript delegate failed `/tmp/magick-bpkD9zy7': @ error/pdf.c/ReadPDFImage/663
我需要能够以比imagick默认值更高的分辨率栅格化PDF,以获得足够好的质量,以便能够读取PNG。任何帮助都将不胜感激

编辑-以下是解决方案-由于网站做得很好

$images = new imagick();
$images->setimageunits(RESOLUTION_PIXELSPERINCH);
$images->setresolution(150,150);
$images->readimage($_FILES['upload']['tmp_name']);
$images->setformat('png');

    foreach ($images as $pageNumber => $image) {
       //Save individual images 
     }
使用

设置图像的密度。尝试将密度设置为200x200,而不是像使用convert-density 1024x0那样尝试1024,0

然后使用


将该分辨率的单位设置为类似PixelsPerInch的值。这将正确设置图像的清晰度。

以下是我编写的命令,用于我的一个项目,将PDF转换为一组图像。convert-colorspace rgb-units PixelsPerInch-density 200x200-resize 768x1024-quality 90 my_pdf_file.pdf my_images_output.jpg'如果使用exec函数,我想它在PHP中可以像这样运行。另外请注意,正如您所看到的,我正在创建JPG,所以对于PNG,它必须进行一些修改!我很感激你的建议,但我无法使用它。我遇到的问题是,如果我在正确阅读PDFSites之前设置了任何参数,就会出现上述错误-我现在明白你的意思了!我将PixelsPerInch设置为1024,这导致临时目录中的空间不足。
$images->setresolution
$images->setImageUnits