-安装Imagick扩展
-ImageMagick
-ghostscript
https://www.ghostscript.com/releases/gsdnld.html
wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs1000/ghostscript-10.0.0-linux-x86_64.tgz
-是否安装成功
-打开cmd进入一个有图片的文件夹,测试是否可以完成图片格式的转换:
magick convert 1.jpg 1.gif
-测试是否可以将pdf文档转换为图片:
gswin64c -dSAFER -dBATCH -dNOPAUSE -r250 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=jpeg -sOutputFile=output/%d.jpg 1.pdf
-PHP转换程序
**
* PDF2PNG
* @param $pdf 待处理的PDF文件
* @param $path 待保存的图片路径
* @param $page 待导出的页面 -1为全部 0为第一页 1为第二页
* @return 保存好的图片路径和文件名
*/
function pdf2png($pdf, $path, $page = -1)
{
if (!extension_loaded('imagick')) {
return false;
}
if (!file_exists($pdf)) {
return false;
}
$im = new Imagick();
$im->setResolution(120, 120);
$im->setCompressionQuality(100);
$im->setImageFormat('jpg');
$im->setBackgroundColor('white');
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
if ($page == -1)
$im->readImage($pdf);
else
$im->readImage($pdf . "[" . $page . "]");
foreach ($im as $key => $val) {
$val->setImageFormat('png');
$filename = $path . "/" . $key . '.png';
if ($val->writeImage($filename) == true) {
$return[] = $key . '.png';
}
}
return $return;
}
$pdfPath = __DIR__ . "/test.pdf"; //要转换为图片的pdf的绝对地址
$outputFolder = __DIR__ . "/output"; //输出图片的目录
$imgs = pdf2png($pdfPath, $outputFolder);
for ($i = 0, $count = count($imgs); $i < $count; $i++) {
echo "<div align=center><font color=red>Page " . ($i + 1) . "</font><br><a href=\"ouput/" . $imgs[$i] . "\" target=_blank><img border=3 height=120 width=90 src=\"ouput/" . $imgs[$i] . "\"></a></div><p>";
}
-生成jpg时出现黑色的背景,可以添加以下代码解决:
$im->setImageFormat('jpg');
$im->setBackgroundColor('white');
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
-设置图片尺寸:
$im->scaleImage(945, 1336.45, true);
签名:这个人很懒,什么也没有留下!