首先标明一下运行环境 tp5框架,PHP5.6+mpdf6.1.3,另外问题和获取到的html字符串有关系,普通字符串运行正常!!!

本来笔者是使用的PHP7.1的环境,运行mpdf8.0.5版本无压力,后来服务器环境所限,只能换成6.1版本,在此记录一下使用方法。

1、获取HTML页面,也可以使用纯手写方式。。。

$url = '****';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 已经获取到内容,没有输出到页面上。
$html = curl_exec($ch);
curl_close($ch);

2、调用mpdf生成文件

    //设置中文编码$mpdf= new \mPDF('zh-CN','A4','', 'dejavusans', 20,20,20,20);//设置中文字体$mpdf->autoScriptToLang = true;$mpdf->autoLangToFont = true;$mpdf->useAdobeCJK = TRUE;$mpdf->SetDisplayMode('fullpage');$mpdf->SetHTMLHeader('');$mpdf->SetHTMLFooter('');$mpdf->WriteHTML($html);//D是在浏览器生成pdf文件另存为 I是直接显示生成的pdf文件$mpdf->Output($file_path,'F');

运行时报错division by zero,询问度娘找到少量资料,在坑里蹲了一天,想起来去github去看看问题,发现是旧版本代码问题,新版已修复,所以找到了最新版代码加到了旧版中

$target = $h / $w;

在mpdf.php类中找到这句话,然后后面运行代码加上非零判断即可。

if ($overflow != 'hidden' && $overflow != 'visible') {$target = $h / $w;if ($target > 0) {if (($ratio / $target) > 1) {$nl = CEIL($actual_h / $this->lineheight);$l = $use_w * $nl;$est_w = sqrt(($l * $this->lineheight) / $target) * 0.8;$use_w += ($est_w - $use_w) - ($w / 100);}$bpcstart = ($ratio / $target);$bpcctr = 1;while (($ratio / $target) > 1) {if ($this->progressBar) {$this->UpdateProgressBar(4, intval(100 / ($ratio / $target)), ('Auto-sizing fixed-position block: ' . $bpcctr++));} // *PROGRESS-BAR*$this->x = $x;$this->y = $y;if (($ratio / $target) > 1.5 || ($ratio / $target) < 0.6) {$use_w += ($w / $this->incrementFPR1);} elseif (($ratio / $target) > 1.2 || ($ratio / $target) < 0.85) {$use_w += ($w / $this->incrementFPR2);} elseif (($ratio / $target) > 1.1 || ($ratio / $target) < 0.91) {$use_w += ($w / $this->incrementFPR3);} else {$use_w += ($w / $this->incrementFPR4);}$use_h = $use_w * $target;$this->rMargin = $this->w - $use_w - $x;$this->pgwidth = $this->w - $this->lMargin - $this->rMargin;$this->HTMLheaderPageLinks = array();$this->HTMLheaderPageAnnots = array();$this->HTMLheaderPageForms = array();$this->pageBackgrounds = array();$this->WriteHTML($html, 4); // parameter 4 saves output to $this->headerbuffer$actual_h = $this->y - $y;$ratio = $actual_h / $use_w;}}if ($this->progressBar) {$this->UpdateProgressBar(4, '100', ' ');} // *PROGRESS-BAR*
}

笔者是compose安装的,代码可能和手动下载的mpdf版本略有区别

tp5使用mpdf生成pdf文件时,碰到division by zero问题解决记录相关推荐

  1. php mpdf例子,yii2使用mpdf生成PDF文件

    ​​yii2里面带有生成PDF的插件,我们通过安装就可以使用. 参考地址:(​https://github.com/mpdf/mpdf) ​https://mpdf.github.io/ 通过comp ...

  2. 使用mpdf生成pdf文件

    本文主要需求是将html页面转换为pdf文档 1.安装mpdf工具类 (composer方式) composer require mpdf/mpdf:8.0.3 2.控制器里调用 <?php/* ...

  3. 【PHP】使用mpdf生成pdf文件

    本文主要需求是将html页面转换为pdf文档 1.安装mpdf工具类 (composer方式) composer require mpdf/mpdf:8.0.3 2.控制器里调用 <?phppu ...

  4. PHP使用mpdf生成PDF文件

    mpdf/mpdf 6.1.0 GitHub https://github.com/mpdf/mpdf <?php// 导出PDFrequire_once __DIR__ . '/vendor/ ...

  5. springboot 基于.ftl模板生成pdf文件

    目录 Demo前置简述 生成pdf内容 项目结构 主要实现 api测试 完整代码地址 Demo前置简述 实现功能:用户个人信息测试数据加上ftl模板得到html字符串,然后根据html字符串生成pdf ...

  6. PHP中使用mpdf导出PDF文件以及生成PDF的方法

    电子书内容介绍了关于PHP.核心技术.实践方面的内容,目前豆瓣.亚马逊.当当.京东等电子书综合评分为:7.1 PHP中使用mpdf 导出PDF文件的实现方法 mPDF是一个很强大的PDF生成库,能基本 ...

  7. 生成PDF文件方案--学习中

    PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段"暴力"破解 ...

  8. 导出pdf文件时加图片水印

    前言:本文探讨的是利用pageEvent事件在生成PDF文件的过程中把图片水印加好,这样导出的是加好水印的pdf文件. 1:加入依赖 <!--导出pdf相关--><dependenc ...

  9. Itext生成pdf文件,itext+Freemarker生成pdf,(中文空白解决)

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

  10. freemarker模板生成pdf文件

    文章目录 1.pom依赖 2.ftl模板以及宋体文件 2.1.文件路径 2.2.ftl文件模板(test.ftl) 3.controller生成pdf文件 1.pom依赖 <!--freemar ...

最新文章

  1. Oracle Mutex 机制 说明
  2. 关于CSS中的相对路径和绝对路径
  3. HDU 2066 一个人的旅行
  4. 给程序员的10条建议,吐血推荐!
  5. java 反射与封装性的_Java反射的封装
  6. mysql gridview_DateGridView控件与mysql交互
  7. 打飞机小游戏,附带源码
  8. python学习——python平台搭建
  9. 抖音短视频怎么加文字 怎么在视频画面批量添加一行滚动字幕?
  10. android 弹幕 计算碰撞轨道,GitHub - imtaotao/danmuku: 高度自定义弹幕样式,碰撞检测,你值得拥有 ...
  11. js:nodejs搭建http服务器为页面添加mysql中的数据分页
  12. 怎么打开ofd文件的三种方法
  13. 基于蜜蜂算法的函数寻优及TSP搜索算法
  14. ios view改变重叠层次关系
  15. 定风波·南海归赠王定国侍人寓娘
  16. 按键脚本c语言,按键精灵脚本(示例代码)
  17. PMP到底是啥,你竟然还不知道?
  18. 计算机常用英语单词[转]
  19. 基于 STM32+FPGA 的多轴运动控制器的设计
  20. c语言实现迪克斯特拉算法

热门文章

  1. 【Excel】偷懒小技巧2:快速为非空单元格编号
  2. 微信公众号,图文编辑超链接中,没有外部链接只能增加公众号链接是什么情况?
  3. MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用
  4. 二叉树的类型定义与基本操作
  5. 研究生学习生活日记——第十三次组会
  6. puml绘制思维导图_盘点那些美美哒的在线思维导图制作神器
  7. 在线制作流程图、思维导图(基于ProcessOn平台)
  8. GNU 软件文档下载
  9. Uipath鼠标单击扩展教程
  10. 计算机关机键 自动重启,电脑关机会重启如何处理_电脑关机立马自动启动的修复方法...