使用PHP和ImageMagick将PDF转换为JPEG

2022-08-30 14:15:25

我正在使用一个litte脚本将PDF转换为JPG。这有效,但质量很差。

脚本:

$im = new imagick( 'document.pdf[ 0]' ); 
$im->setImageColorspace(255); 
$im->setResolution(300, 300);
$im->setCompressionQuality(95); 
$im->setImageFormat('jpeg'); 
$im->writeImage('thumb.jpg'); 
$im->clear(); 
$im->destroy();

还有一件事,我想保留PDF的原始大小,但转换会裁剪JPG的大小。


答案 1

可以使用 来完成,但您需要在加载图像之前执行此操作。试试下面这样:setResolution

// instantiate Imagick 
$im = new Imagick();

$im->setResolution(300,300);
$im->readimage('document.pdf[0]'); 
$im->setImageFormat('jpeg');    
$im->writeImage('thumb.jpg'); 
$im->clear(); 
$im->destroy();

答案 2

在阅读PDF之前,可以通过设置(即DPI)来更改从PDF生成的图像的质量 - 这可以通过下面的ghostscript(gs)来栅格化PDF。为了获得良好的结果,请以所需的密度加倍进行超级采样,并用于恢复到所需的DPI。如果您想要 RGB JPEG,请记住将 更改为 RGB。densityresamplecolorspace

的典型命令行版本可能是:convert

convert -density 600 document.pdf[0] -colorspace RGB -resample 300 output.jpg

如果需要裁剪它,如果图像在页面中居中,则重新取样后的命令通常是明智的。-shave

至于PHP IMagick扩展,好吧,我个人从未使用它 - 所以我不确定你如何指定文件读取提示,但我希望这是可能的。


推荐