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 中dirname(_file_)讲解
Mar 18 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
php explode函数实例代码
Feb 27 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 PHP
PHP内存溢出优化代码详解
Feb 26 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面试题集锦
2012/03/08 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
JQuery实现展开关闭层的方法
2015/02/17 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
canvas实现钟表效果
2017/02/13 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python中的decorator的作用详解
2018/07/26 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
python3 实现口罩抽签的功能
2020/03/11 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
水污染治理工程专业求职信
2014/06/14 职场文书
清洁工岗位职责
2015/02/13 职场文书
校友回访母校寄语
2015/02/26 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers
一文搞懂Java中的注解和反射
2022/06/21 Java/Android