PDF文件转换为图片
安装扩展
imagick
- 下载: PECL :: Package :: imagick (php.net)
- 安装: 解压后把 php_imagick.dll 复制到配置的扩展目录中(默认是php根目录下的ext文件夹)
- 配置: 在 php.ini 文件,增加 extension=php_imagick.dll
ImageMagick
- 下载: ImageMagick – Download
- 安装: 执行安装后将安装目录下的 CORE_RL_.dll 这些文件拷贝到php根目录下
Ghostscript
- 下载: Ghostscript
完成上述扩展后重启
代码示例
代码语言:javascript复制# PDF转图片
public function pdf2img($pdf_path_folder, $pdf_name, $new_type = 'png')
{
$pdf_path = $pdf_path_folder . $pdf_name;
$file_name_no_suff = str_replace(strrchr($pdf_name, "."),"",$pdf_name); // 文件名(无后缀)
$new_type = $new_type == 'jpg' || $new_type == 'png' ? $new_type : 'jpg';
$img_path = $pdf_path_folder . $file_name_no_suff . '.' .$new_type;
try {
// 识别 PDF 为 前景图片 $img_front;
$img_front = $pdf_path_folder . $file_name_no_suff . '_fimg.' .$new_type;
$im = new Imagick();
$im -> setResolution(300, 300); // 设置图像的分辨率
$im -> readImage($pdf_path);
$im -> setImageFormat($new_type);
$im -> setImageCompression(Imagick::COMPRESSION_JPEG);
$im -> setImageCompressionQuality(100);
$im -> writeImage($img_front);
$im -> clear();
$im -> destroy();
// 读取 前景图片 $img_front;
$readImage = new Imagick();
$readImage -> readImage($img_front);
// 生成背景图片(白底)
$blankPage = new Imagick();
$blankPage -> newPseudoImage($readImage->getImageWidth(), $readImage->getImageHeight(), "canvas:white");
// 设置合并的位置
$blankPage -> compositeImage($readImage, Imagick::COMPOSITE_ATOP, 0, 0);
// 合并
$blankPage = $blankPage->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$blankPage -> writeImage($img_path);
$blankPage -> destroy();
} catch (Exception $e) {
var_dump(iconv("gbk",'utf-8',$e ->getMessage()));
}
return $img_path;
}
(adsbygoogle = window.adsbygoogle || []).push({});