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分页显示制作详细讲解
Nov 19 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
使用迭代器 遍历文件信息的详解
Jun 08 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
PHP中文乱码解决方案
Mar 05 PHP
php文件缓存方法总结
Mar 16 PHP
PHP如何使用Memcached
Apr 05 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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
一个显示天气预报的程序
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
jquery中ajax学习笔记一
2011/10/16 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python命令启动Web服务器实例详解
2017/02/23 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
python如何快速生成时间戳
2020/07/21 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
简历中自我评价范文3则
2013/12/14 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
房产转让协议书
2014/04/11 职场文书
意向协议书范本
2014/04/23 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
文明单位汇报材料
2014/12/24 职场文书
创先争优承诺书
2015/01/20 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
python如何正确使用yield
2021/05/21 Python
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技