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
关于Intype一些小问题的解决办法
Mar 28 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
php 接口类与抽象类的实际作用
Nov 26 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
PHP代码审核的详细介绍
Jun 13 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
PHP实现批量上传单个文件
Dec 29 PHP
php中bind_param()函数用法分析
Mar 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
thinkphp常见路径用法分析
2014/12/02 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
实例讲解Python3中abs()函数
2019/02/19 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
高中微机老师自我鉴定
2014/02/16 职场文书
考博专家推荐信
2014/05/10 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
如何写股份合作协议书
2014/09/11 职场文书
2015年酒店工作总结
2015/04/28 职场文书
起诉书范文
2015/05/20 职场文书
贫困证明怎么写
2015/06/16 职场文书
网络研修心得体会
2016/01/08 职场文书
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技