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验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
PHP屏蔽过滤指定关键字的方法
Nov 03 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
PHP生成唯一订单号
Jul 05 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
如何在centos8自定义目录安装php7.3
Nov 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编程中八种常见的文件操作方式
2006/11/19 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
jQuery根据ID、CLASS、等获取对象的实例
2016/12/04 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
python各种excel写入方式的速度对比
2020/11/10 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
为什么需要版本控制?
2013/08/08 面试题
架构师岗位职责
2013/11/18 职场文书
自荐信格式简述
2014/01/25 职场文书
银行求职自荐书
2014/06/25 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js