当前位置: 移动技术网 > IT编程>开发语言>PHP > php将html转为图片的实现方法

php将html转为图片的实现方法

2017年12月12日  | 移动技术网IT编程  | 我要评论

衡阳中心汽车站,在线尺子刻度,诺基亚数据线充电

在服务器端解析将编译好的html转换为图片。

由于html一般由客户端浏览器解析,服务器端不能直接解析html代码。所以我们需要借助php类库及扩展完成这一需求。

文件转换过程为 html —> pdf —>png。

需要借助的类库是mpdf ,imagick

pdf 官方下载地址是:http://www.mpdf1.com/mpdf/index.php (推荐下在6.0 虽然大了点)这是一个类库直接下载 上传到服务器即可,里面东西不少,新建一个 html2pdf 的文件夹 引入

include('./html2pdf/mpdf');

整一个函数

/*
名称  html转换为pdf图片
功能  将html页面转换为pdf图片(部分css样式无法识别)
参数数量 2个
1.必须 html代码 可以用file_get_contenth获取
2.必须 生成pdf存放位置路径
3.非必须 pdf宽
4.非必须 pdf高
返回值 图片名称
实例  code($html,'img/1.pdf');
 * */
function html2pdf($html, $path, $w=414 ,$h=736){
 //设置中文字体(很重要 它会影响到第二步中 图片生成)
$mpdf=new mpdf('utf-8');
$mpdf->autoscripttolang = true;
$mpdf->autolangtofont = true;
//设置pdf的尺寸
$mpdf->writehtml('<pagebreak sheet-size="'.$w.'mm '.$h.'mm" />');


//设置pdf显示方式
$mpdf->setdisplaymode('fullpage');

//删除pdf第一页(由于设置pdf尺寸导致多出了一页)
$mpdf->deletepages(1,1);

$mpdf->writehtml($html);

$pdf_name = md5(time()).'.pdf';

$mpdf->output($path.$pdf_name);

return $pdf_name;

}

用这个函数基本就可以解决html到pdf的问题,需要注意的是mpdf并不能有效的识别html中所有的css样式,例如position border-radius等。位置可以用margin解决,需要显示圆角图片的话,就需要将图片裁剪为圆形了。

接下来开始将pdf转换为png图片了这一步需要在服务器安装imagemagick组件 一次运行一下命令

yum install -y imagemagick
yum install -y imagemagick-devel
yum install -y gcc
yum install -y php-pear
yum install -y ghostscript
yum install -y ghostscript-devel.x86_64

到这一步注意运行

yum list |grep imagick

根据查询结果 根据自己服务器版本 选择安装 我的是5.6.3

yum install -y php56w-pecl-imagick.x86_64
yum install -y php56w-pecl-imagick-devel.x86_64

重启服务器

service nginx restart
service php-fpm restart

使用 phpinfo() 或运行 php -m | grep imagick 来查看是否安装成功

然后使用函数将已经生成的pdf转换为png就可以了

/*
名称  pdf转换为png图片
功能  将pdf图片转换为png图片
参数数量 2个
1.必须 html代码 可以用file_get_contenth获取
2.必须 生成pdf存放位置路径

实例  code($html,'img/1.pdf');
 * */
function pdf2png($pdf, $png, $w=50, $h=50){
if(!extension_loaded('imagick')){
return false;
}
if(!file_exists($pdf)){
return false;
}

$im = new imagick();

$im->setresolution($w,$h); //设置分辨率
$im->setcompressionquality(15);//设置图片压缩的质量

$im->readimage($pdf);
$im -> resetiterator();
$imgs = $im->appendimages(true);
$imgs->setimageformat( "png" );
$img_name = $png;
$imgs->writeimage($img_name);
$imgs->clear();
$imgs->destroy();
$im->clear();
$im->destroy();

return $img_name;
}

ok,基本完成简单页面的图片化了。图片大小为1m左右。小了不清楚。

以上这篇php将html转为图片的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网