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 heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
php英文单词统计器
Jun 23 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
Nov 05 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
php生出随机字符串
Jul 06 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 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环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP网络操作函数汇总
2015/05/18 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
tagName的使用,留一笔
2006/06/26 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
pycharm配置git(图文教程)
2019/08/16 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
网络程序员自荐信
2014/01/25 职场文书
小学生读书活动总结
2014/06/30 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
电工实训报告总结
2014/11/05 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏
Oracle 多表查询基本语法实例
2022/04/18 Oracle