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 相关文章推荐
模仿OSO的论坛(一)
Oct 09 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
解析PHP中一些可能会被忽略的问题
Jun 21 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
PHP实现多文件上传的方法
Jul 08 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
WordPress中制作导航菜单的PHP核心方法讲解
Dec 11 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
Yii2框架数据验证操作实例详解
May 02 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
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
php常用数学函数汇总
2014/11/21 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
简单了解python数组的基本操作
2019/11/26 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
名企HR怎样看待求职信
2014/02/23 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
企业文化演讲稿
2014/05/20 职场文书
党员个人公开承诺书
2014/08/29 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
关于感谢信的范文
2015/01/23 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
会计岗位职责范本
2015/04/02 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
施工安全责任协议书
2016/03/23 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
MySQL 分组查询的优化方法
2021/05/12 MySQL
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Golang二维数组的使用方式
2021/05/28 Golang