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新手上路(七)
Oct 09 PHP
Phpbean路由转发的php代码
Jan 10 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
sphinx增量索引的一个问题
Jun 14 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 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 保留小数点
2009/04/21 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php依赖注入知识点详解
2019/09/23 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
HTML上传控件取消选择
2013/03/06 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Python正则表达式常用函数总结
2017/06/24 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
购买原创艺术品:Zatista
2019/11/09 全球购物
中软Java笔试题
2012/11/11 面试题
师范毕业生自荐信
2013/10/17 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
毕业设计说明书
2014/05/07 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
党员查摆剖析材料
2014/10/10 职场文书
南湾猴岛导游词
2015/02/09 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL