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


Posted in PHP onMay 19, 2017

在服务器端解析将编译好的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转为图片的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
在PHP中使用模板的方法
May 24 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
php面象对象数据库操作类实例
Dec 02 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP实现文件上传功能实例代码
May 18 #PHP
php分页查询mysql结果的base64处理方法示例
May 18 #PHP
php数值转换时间及时间转换数值用法示例
May 18 #PHP
yii2 resetful 授权验证详解
May 18 #PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 #PHP
PHP实现电商订单自动确认收货redis队列
May 17 #PHP
老生常谈PHP面向对象之解释器模式
May 17 #PHP
You might like
PHP自定义大小验证码的方法详解
2013/06/07 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
php实现将Session写入数据库
2015/07/26 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
PHP实现简单日历类编写
2020/08/28 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
javascript表单验证大全
2015/08/12 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
python操作gmail实例
2015/01/14 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Django自定义manage命令实例代码
2018/02/11 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
毕业生自我鉴定
2013/11/05 职场文书
银行实习生的自我评价
2013/12/09 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
小学庆六一主持词
2015/06/30 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS