关于使用php的mpdf插件遇到的一些问题
一.插件版本
"mpdf/mpdf": "^8.0",
二.报错:Undefined index: list_style_type
这个是插件无法识别 li 标签导致,生成pdf是加入下面代码
<style> li { list-style-type: none; list-style-image: none; list-style-position: unset; } </style>
三.图片请求一直没有响应,导致卡死,生成不了pdf
一般是图片地址本身就连接不了,或者图片重定向或者404都有可能有问题
1.问题代码(插件里面fopen和file_get_contents方法没有加超时时间):
插件代码路径:vendor\mpdf\mpdf\src\Image\ImageProcessor.php
前面获取不到文件信息,后面就用curl请求
2.加入超时时间代码
//对fopen和file_get_contents方法游戏,单位:秒
ini_set('default_socket_timeout', 5);
// 对后面的curl请求有效
$mpdf->curlTimeout = 5;
$mpdf->curlExecutionTimeout = 7;
四.插件识别不了svg,如果html有svg可以转成png,然后替换dom(可以用jquery的方法replaceWith替换dom)
前端js svg转png方法
https://blog.csdn.net/qq_39634880/article/details/140546066?spm=1001.2014.3001.5501
五.样式上,插件识别不了display:flex样式和iconfont之类
iconfont如果不多可以转成图片
六.完整代码
$html = '<div>测试</div>';
/** 关于设置的default_socket_timeout,curlExecutionTimeout,curlTimeout请求超时时间* 本地测试了一下,如果文档中存在相同的图片链接,如果第一次都超时了,第二次不会再请求了,默认是失败** 例如:* <img src='127.0.0.1:8080/test.png'/> 这个第一次请求超时,会真正的去请求* <img src='127.0.0.1:8080/test.png'/> 这个默认是失败了** 定义输出流超时时间 - 主要针对插件里面的fopen和file_get_contents方法,这两个方法访问图片url地址,如果地址一直没有响应(图片url重定向也有可能导致一直获取不到图片,导致卡死,比如http重定向到https),这个两个方法就一直卡着* 图片获取文件路径 :vendor\mpdf\mpdf\src\Image\ImageProcessor.php* 不过获取不到最后会用curl_setopt去请求的,curlTimeout,curlExecutionTimeout这个两个参数是对应超时时间* 这边设置超时时间,避免一直卡着,导致生成pdf失败** 单位:秒*/
ini_set('default_socket_timeout', 5);$mpdf = new Mpdf(['mode' => 'utf-8','tempDir' => 'c:/GCloud_Document/pdf/','useSubstitutions' => true,'backupSubsFont' => ['dejavusanscondensed', 'arialunicodems', 'sun-exta'],
]);$mpdf->SetFooter('{PAGENO} / {nbpg}');
// pdf里面的title名称
$mpdf->SetTitle('测试');$mpdf->allow_charset_conversion = true;
$mpdf->useAdobeCJK = true;
$mpdf->autoLangToFont = true;
$mpdf->autoScriptToLang = true;
//存在一张图片加载不了就接口报错,这边注释掉
// $mpdf->showImageErrors = true;/** curlTimeout是设置连接对方主机时的最长等待时间* curlExecutionTimeout整个cURL函数执行过程的最长等待时间* 设置这两个主要是请求图片相关,有些图片访问不了,不设置,就一直卡着* 这边试了下,最终以curlExecutionTimeout这个时间** 单位:秒*/
$mpdf->curlTimeout = 5;
$mpdf->curlExecutionTimeout = 7;$mpdf->biDirectional = true;//样式,自己写个路径
$header = "<link href='./pdf.css' rel='stylesheet'>";
/** vendor//mpdf//mpdf//src//Tag//BlockTag.php 900行报错:Undefined index: list_style_type* 加以下样式就不报错,虽然不报错了,但是样式上不好看*/
$header.='<style> li { list-style-type: none; list-style-image: none; list-style-position: unset; } </style>';
$mpdf->WriteHTML($header);$html = "<div>{$html}</div>";$mpdf->Bookmark('测试', 0);
try {$mpdf->WriteHTML($html);
} catch (\Exception $ex) {var_dump('生成pdf失败:');var_dump($ex->getMessage());return;
}//D是下载
$mpdf->Output('test.pdf', 'D');
六.生成pdf慢就是图片影响,其他基本上不影响,如果没有图片基本上几秒搞定
相关文章:
关于使用php的mpdf插件遇到的一些问题
一.插件版本 "mpdf/mpdf": "^8.0", 二.报错:Undefined index: list_style_type 这个是插件无法识别 li 标签导致,生成pdf是加入下面代码 <style> li { list-style-type: none; list-style-image: none; list-style-positi…...
电脑截图,颜色变淡的问题解决
解决 Windows 11 在 HDR 模式下截图 Edge 浏览器界面时画面过曝的问题-腾讯云开发者社区-腾讯云 (tencent.com) 主要是浏览器用错了东西,调一下就好,详情看链接 联想拯救者y9000p为例,选择sRGB,就好啦,拜拜喽&#x…...
uniApp跳转外链
创建一个新的页面,在该页面中使用web-view组件加载外部URL:pages/web-view/web-view <template><view><uni-list><uni-list-itemtitle"打开外部链接"click"openExternalLink"></uni-list-item></…...
科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”
科技云报道原创。 从文生文到文生图,再到文生视频,近年来,以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业的新一轮浪潮。2024年更是被业内称为大模型应用爆发元年。 年初,Sora横空出世验证了Scalling Law在视频生…...
SpringSecurity+Mysql数据库实现用户安全登录认证
Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式,还是响应式web应用程序都完美支持,现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说,SpringSecurity功能更加复杂而且更加强…...
虚拟网卡添加ip
1.虚拟机网卡添加 1.进入虚拟机设置添加网卡即网络适配器 2.配置文件修改 1.查看网卡是否添加成功 ip ad ifconfig 其中ens161就是我们新添加的设备同时这个ens161也是我们硬件名字 2.进入系统配置文件 cd /etc/sysconfig/network-scripts/#配置文件目录[rootlocalhost ne…...
Unity向量线性插值Lerp
inline glm::vec3 Lerp(glm::vec3 start, glm::vec3 end, float t){t glm::clamp(t, 0.0f, 1.0f);return (start*(1-t)end*t); }...
fatal: Could not read from remote repository. 解决方法
问题描述: Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists。 解决方法: 当在网上尝试大量方法仍然失败的时候,不妨试试这个方法。 在 github 上&…...
postman查询单条数据Get方法,无任何输出,idea后端也没有任何数据和提示的解决方法
问题描述: 正常使用postman测试,输入内容没有错误,但是却没有任何消息 后端也是,没有任何消息: 解决方法: 问题的原因主要是因为postman: 我们只需要新建一个页面,把刚才的查询语…...
query怎么改写,才能实现高质量的知识问答系统
为了实现高质量的知识问答系统,query改写需要综合利用多种技术,确保改写后的查询更具语义性、准确性和完整性。以下是具体的步骤和方法: 1. 同义词和短语替换 步骤: 建立同义词库:使用现有的同义词词典或根据特定领…...
Python实战——轻松实现动态网页爬虫(附详细源码)
大家好,我是东眠的鱼,专注原创,致力于用浅显易懂的语言分享爬虫、数据分析及可视化等干货,希望人人都能学到新知识。<文末附带精品籽料哦,也可以和博主一起学Python呀!> 项目背景 有同学自学爬虫时…...
Python应用—利用opencv实现图像匹配
1.创作需求 我们通常需要从一幅图中找到自己想要的信息,例如从一堆表情中找到,自己需要的表情。 2.创作思路 1.使用模板图片作为卷积核与原图进行卷积运算,得出匹配度超过某一阈值的范围。 2.对该部分进行框选 3.工具 主要使用opencv库实现,通过 cv2.matchTemplate(…...
Excel函数基础(二)
1、单元格名称 框选单元格(不含标题),公式选项卡->定义名称, 或者框选单元格后,在左上角的栏位直接输入要定义的名字,按下enter键即可 这样在使用函数时,数据范围参数可以用定义的名称来替…...
学习大数据DAY30 python基础语法3
目录 上机练习 5 File(文件) 读写 文本文件写 文本文件读 csv 文件写 csv 文件读 异常 自定义异常 上机练习 6 上机练习 5 上机练习5的作业我昨天就写完了,但是因为它是今天的作业,我就今天发咯。 # atm 机模拟器:使用 main 入口&…...
一文弄清Java的四大引用及其两大传递
开场白 Hello大家好呀,我是CodeCodeBond✊最近在复习很多很多的基础知识,有了很多新的感悟~ 话不多说,直接发车✈ 四大引用 问题切入点 在学习 Thread线程利用ThreadLocalMap实现线程的本地内存(变量副本)的时候&…...
arduino程序-MC猜数字5、6(基础知识)
arduino程序-MC猜数字5、6(基础知识) 1-23 MC猜数字-5 自定义函数自定义函数自定义清理显示内容函数displayClear()带参数函数displayNumber带参数、返回值的函数 1-24 MC猜数字-6 完成制作显示0~9数字函数改造产生随机数字函数改…...
【笔记】如何在ps里调整贴图
如图我想要在ps里把角上半部分画成绿色 1.打开ps,拖进贴图 2.把所有图层全选复制,除了实体、选择、背景和uv图层 3.把这些图层合并 4.自己手动选上半部分角 按shift加选 alt减选 5. 这里可以调整饱和度、色相、明度 6. 选好之后用羽化之后边缘会…...
【C++11】深度解析--异步操作(什么是异步?异步有那些操作?异步操作有什么用呢?)
目录 一、前言 二、什么是异步操作呢? 🔥异步的概念🔥 🔥异步的生活案例说明🔥 三、异步有那些操作呢? 🔥std::future🔥 💢std::future 的概念💢 &a…...
PHP苹果 V X iPhone微商i o s多分开V X语音转发密友朋友圈一键跟圈软件
苹果VX神器!iPhone微商必备:ios多开、VX语音转发、密友朋友圈一键跟圈软件大揭秘! 一、iOS多开新境界,工作生活两不误! 你是不是也烦恼过,想要在工作号和生活号之间自由切换,却因为iPhone的限制…...
LDR6020 iPad皮套一体式键盘充电方案解析
在移动办公与学习的浪潮中,iPad凭借其强大的性能与便携性,成为了越来越多人的首选设备。然而,随着工作与学习任务的日益复杂,单一的触控操作已难以满足高效、精准的需求。因此,搭配一款优秀的键盘成为了提升iPad使用体…...
一款功能强大且免费的跨平台图片批量处理工具
XnConvert是一款功能强大且免费的跨平台图片批量处理工具,广泛应用于个人用户、教育机构和非营利组织。它支持超过500种图片格式,包括常见的JPEG、PNG、TIFF、GIF、WebP、PSD、JPEG2000等,并能够导出为大约70种不同的文件格式。 该软件的主要…...
用Python打造精彩动画与视频,4.2 特效和滤镜的使用
第四章:深入MoviePy 4.2 特效和滤镜的使用 在视频制作和编辑过程中,特效和滤镜是不可或缺的元素。它们不仅能增强视觉效果,还能赋予视频独特的风格和情感。MoviePy 作为一个功能强大的视频编辑库,提供了多种内置的特效和滤镜&…...
在 iOS 系统中,如何设置才能更好地保护个人隐私?
在iOS系统中,有一些设置和功能可以帮助您更好地保护个人隐私。以下是一些建议: 使用设备锁:设置一个强密码、Touch ID或Face ID来锁定您的设备。这可以防止其他人访问您的设备和个人信息。 更新软件:及时更新您的iOS系统和应用程…...
Charles抓包工具系列文章(七)-- Rewrite工具的应用示例
一、背景 客户端通过域名访问后端服务,在api网关层,会判断path的前缀,默认/api开头的请求都转发至后端服务A。 当前缀是/assist/api开头,请求将转发至后端服务B(部署在192.168.80.226,便于测试对比) 在不改动kong网关配置的情况下,现需要把后者的请求转发至192.168.…...
国内SSL证书颁发机构哪家服务更优质?
SSL证书作为保障网站数据传输安全的关键工具,其重要性不言而喻。选择一个可靠的SSL证书代理商,不仅能够提供多样化的证书类型,而且能在众多品牌中进行比较,选择最适合自己的、性价比更高的产品。此外,优质的代理商还能…...
鸿蒙系统开发【设备安全服务-应用设备状态检测】安全
设备安全服务-应用设备状态检测 介绍 本示例向您介绍如何在应用中获取DeviceToken用于对应用的设备状态进行检测。 需要使用设备安全服务接口 kit.DeviceSecurityKit。 效果预览 Sample工程的配置与使用 在DevEco中配置Sample工程的步骤如下 [创建项目]及[应用]。打开Sam…...
19个运维工程师面试集锦
第一部分:Linux基础 题目1: 有一百个图片文件,它们的地址都是 http://down.xiaomi.com/img/1.png http://down.xiaomi.com/img/2.png … 一直到 http://down.xiaomi.com/img/100.png 如何批量下载这100个图片文件,并找出其中大…...
一芯解锁「看家」新体验,航芯高性价比猫眼智能锁方案,让安全看得见!
随着智能门锁市场规模逐年递增,行业“内卷”也持续激烈。伴随着一路加码的功能卖点,智能门锁制造商正面临着产品功能芯片增多和成本优化的双重挑战。消费者不仅追求易用性、智能化和美观性,更期待产品具有良好的性价比。 而在智能门锁的众多…...
IPv4 vs IPv6:了解这两大协议的关键差异
我发现,很多找代理IP的朋友在后台问我的问题都很相似!都被配置IP的最后一步:选择IPv4还是IPv6?给难住了。昨晚我一晚没睡,终于整理出对IPv4和IPv6的对比总结,从概念阐述到特点对比,再解答IPv6总…...
C#知识|XML文件操作
哈喽,你好啊,我是雷工! 之前有朋友在群里聊XML文件操作的问题,今天正好学习相关内容, 以下为学习笔记。 01 XML介绍 ①:XML是eXtensible Markup Language的缩写,即扩展标记语言。 ②:XML是一种可以用来创建自定义的标记语言,由W3C(万维网协会)创建,用来克服HTML的局…...
企业网站模板文件管理/小程序怎么引流推广
发现把含main()函数放到gdu_xmp下就编译正常,放到工程根目录下编译报错,好像找不到含main()的.c文件...
简单网站开发/网站自动提交收录
一 概念 缓存的分类: 客户端缓存 (Client Caching) 代理缓存 (Proxy Caching) 反向代理缓存 (Reverse Proxy Caching) 服务器缓存(Web Server Caching) 使用缓存的好处&…...
wordpress文章末尾显示tag标签/厦门谷歌seo公司
最近切换了新的收银系统,机器还是老机器,还好没啥问题可以正常使用。调试完成后 收银、微支付都挺正常,于是收拾东西回家了。第二天一早顾客发现网络用不了,远程看下ip地址改了,重新设置下又可以了。当时没放在心上&am…...
广东免费建站公司/南京百度推广
2816. Troywar loves Maths ★★☆ 输入文件:Troy_1.in 输出文件:Troy_1.out 简单对比 时间限制:1 s 内存限制:256 MB 【题目描述】 众所周知,Troywar总是不好…...
如何给自家网站做关键词优化/mac日本官网入口
参考: 在WinForm项目中使用Windows Runtime的方法 c# 使用运行时库配置 修改csproj配置文件 在<TargetFramework>v4.5</TargetFramework>下面 添加 <targetPlatformVersion>10</targetPlatformVersion>添加引用windows.winmd 添加引用中…...
商丘网站建设哪家专业/商品热搜词排行榜
有时和一些所谓的朋友聊天,他们都在说他[她]认识什么什么有头有脸的人!多厉害等等...就是有点虚了,你认识的人的成就并非是你的努力获得,所以讲太多,反而会让人觉得你很讨厌!稍微有点思想的人就很容易看出&…...