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 相关文章推荐
火车头采集器3.0采集图文教程
Mar 17 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
PHP中的use关键字概述
Jul 23 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
Laravel事件监听器用法实例分析
Mar 12 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+mysql分页代码详解
2008/03/27 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python中字典增加和删除使用方法
2020/09/30 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
生日宴会答谢词
2014/01/09 职场文书
旷课检讨书1000字
2014/02/14 职场文书
班级旅游计划书
2014/05/03 职场文书
护士工作失误检讨书
2014/09/14 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书