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连接Oracle数据库
Oct 09 PHP
如何将一个表单同时提交到两个地方处理
Oct 09 PHP
PHP执行zip与rar解压缩方法实现代码
Dec 05 PHP
php开发环境配置记录
Jan 14 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
php通过session防url攻击方法
Dec 10 PHP
PHP魔术方法的使用示例
Jun 23 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
基于PHP制作验证码
Oct 12 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
简单上手Python中装饰器的使用
2015/07/12 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
python安装Scrapy图文教程
2017/08/14 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python 互换字典的键值对实例
2019/02/12 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
构建高效的python requests长连接池详解
2020/05/02 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
python实现图片转字符画
2021/02/19 Python
精灵市场:Pixie Market
2019/06/18 全球购物
代办社保委托书范文
2014/10/06 职场文书
党员活动总结
2015/02/04 职场文书
自主招生自荐信格式
2015/03/04 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang