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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
PHP Ajax实现页面无刷新发表评论
Jan 02 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
php生成带logo二维码方法小结
Apr 08 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
phpquery中文手册
Mar 18 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文本数据库的搜索方法
2006/10/09 PHP
转换中文日期的PHP程序
2006/10/09 PHP
用PHP读取RSS feed的代码
2008/08/01 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
python练习程序批量修改文件名
2014/01/16 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
没编程基础可以学python吗
2020/06/17 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
买房委托公证书
2014/04/08 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
单位租房协议书范本
2014/12/04 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python