升级到 PHP7.1 和 MPDF 显示错误 - 在第 30648 行遇到非数字值
Posted
技术标签:
【中文标题】升级到 PHP7.1 和 MPDF 显示错误 - 在第 30648 行遇到非数字值【英文标题】:Upgrade to PHP7.1 and MPDF show error - A non-numeric value encountered at line 30648 【发布时间】:2017-05-16 06:52:14 【问题描述】:我长期使用 php 5.x 和 mPDF 6.x。
这周我决定将系统升级到 PHP7.1 但仍然使用 mPDF6。
升级后遇到一些问题。
问题 1::
控制台显示错误消息:与类名同名的构造函数已弃用。
我遍历每个 php 文件并找到类,然后用 __construct(...) 替换构造函数
问题 2::
控制台显示错误消息:: 无法将属性 ID 分配给 $attr 我转到函数 MergeCSS(...) 中的文件 mPDF.php。我在第三行添加了新的代码行。
if (empty($attr)) $attr = array();
问题 3::
控制台显示以下错误消息:: 第 30648 行的“遇到非数值”。
我解决这个问题的办法就是::
-
将 mPDF.php 文件中的 mPDF->ConvertSize() 函数替换为 MPDF7 中的编码。
通过将函数 ConvertSize() 替换为函数 ConvertSize() 和 multiplyFontSize();
https://github.com/mpdf/mpdf/blob/development/src/SizeConverter.php
-
为 mPDF 类添加常量
const SCALE = 72 / 25.4;
希望对遇到此问题的人有所帮助。
【问题讨论】:
感谢第三个解决方案 【参考方案1】:对于想要完整的“遇到的非数字值”修复的人。用commit 看看我的 mpdf 6.1.3 的分叉回购。
【讨论】:
【参考方案2】:仅供参考:PHP7 在遇到具有多个默认块的 switch 语句时会引发编译时错误。 mpdf 在其 switch 语句中使用多个默认块。
【讨论】:
【参考方案3】:将边距设置为为我解决的数值
之前
$mpdf = new \Mpdf\Mpdf([
'margin_left' => '7em',
'margin_right' => '7em',
'margin_top' => '7em',
'margin_bottom' => '7em',
]);
之后
$mpdf = new \Mpdf\Mpdf([
'margin_left' => '7',
'margin_right' => '7',
'margin_top' => '7',
'margin_bottom' => '7',
]);
【讨论】:
【参考方案4】:我遇到了这个错误,因为我使用函数 writeText
将 x
和 y
作为空字符串传递,之前使用旧的 mpdf 版本和 php 5.6 它可以工作。现在我将其改为使用零。
【讨论】:
【参考方案5】:我有版本 8.0.0 和同样的错误。
我的解决方案是:在第 79 行的文件 src/SizeConverter.php 中:
case '%':
if ($fontsize && $usefontsize)
$size *= $fontsize / 100;
else
$size *= $maxsize / 100;
break;
改为:
case '%':
if ($fontsize && $usefontsize)
$size *= $fontsize / 100;
else
$maxsize = \str_replace('mm', '', $maxsize);
$size *= $maxsize / 100;
break;
【讨论】:
以上是关于升级到 PHP7.1 和 MPDF 显示错误 - 在第 30648 行遇到非数字值的主要内容,如果未能解决你的问题,请参考以下文章