问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

讨论在PHP中如何把带有HTML内容的文字生成图片

发布网友 发布时间:2022-04-23 10:22

我来回答

2个回答

懂视网 时间:2022-04-06 07:16

php将html转为图片的方法:首先借助类库mPDF将html转换成pdf,代码为【$pdf_name= md5(time()).'.pdf'】;然后将pdf转换为png,代码为【$imgs->setImageFormat( "png"】。

【相关学习推荐:php编程(视频)】

php将html转为图片的方法:

文件转换过程为 html —> pdf —>png

需要借助的类库是mPDF ,imagick

这是一个类库直接下载 上传到服务器即可,里面东西不少,新建一个 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培训栏目!

热心网友 时间:2022-04-06 04:24

具体代码如下:
<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
​PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我想问扣扣邮箱在哪里 求几道奥数题的答案(算数的)要简便得算哈 能不能给我六十道五年级奥数题.要答案 六十道五年级奥数题? 比亚迪和哪国合资的车 入党政审有什么步骤? 请问邮箱在哪里我怎么找不到 夫妻相克表太准了 夫妻相克会离婚吗? 夫妻相克表太准了夫妻五行相克化解方法 无法登录学信网怎么办? 把html代码转换成图片 java中利用html2image将html代码转换成图片时怎么调整生成图像的... html 内容生成一张图片!!!很急!!! 如何把HTML转换为JPEG或者其他格式的图片 js中点击按钮将html页面导出成图片 自己做的html生成图片后,怎么使html生成的图片用jpg保存下来,谢谢了... 哪些是知名品牌的床垫 如何将html中的div部分的内容生成一张图片 乳胶床垫,十大排名品牌 如何用HTML代码生成图片? 十大床垫品牌都有哪些? 如何将静态的html代码转换成图片 哪个牌子的床垫比较好呢? 如何根据html代码生成图片 2017床垫十大品牌排名是什么 怎么选择床垫呢 html打开之界面,怎么转换成图片,急!!! 有谁知道全球十大床垫品牌是哪几个吗? ios 中如何将html生成图片 进口床垫品牌十大排名 怎样将html页面生成图片下载下来? 我想把一个html的内容转化成为图片,在本地win是好的,但是在linux上总是乱码 微信给别人发了红包,他还没领取我就把他删了,红包还会退还吗 发错微信红包了,对方还没有领取,我就把他删除了,他还能领到这个红 微信发了红包对方没有领取删除好友红包会退回么? 自己微信给别人发红包,然后自己删除对方好友后,自己发的红包还能回来吗? 微信被好友删了领取对方红包还会显示吗 微信好友把我删了,我给她发了红包她又加了我,她能收到红包吗 微信我把好友删除再拉黑,可是我们在一个群里,我发红包他能抢吗? 我把对方的微信删了但是对方给我发了红包这个钱会退回去嘛?_百度知 ... 在微信里面给好友发了个红包 我把好友删除了 他还能领取红包吗 电脑无法发送打印任务是怎么回事 epson打印机 l363 无法发送打印任务,打印机新的,驱动是附带光盘装的,每... 打印机发送打印任务后不打印,怎么办 电脑升级到win11后,EPSON L380打印机状态错误,无法发送任务到打印机? 打印机发送任务不打印有何处理办法? 网络共享打印机,已经连接到打印机,就是无法打印信息发送不过去。已经有... 打印机无法打印,没有打印任务。 打印机无法打印显示下层文档怎么办? hp打印机发送打印任务后不打印要如何解决? 查看红包收发纪录时,显示红包数据记录过期,是数据记录过期,还可以怎么查看红包收发对象?