我长时间使用PHP 5.x和mPDF 6.x.
本周我决定将系统升级到PHP7.1,但仍然使用mPDF6。
升级后我遇到了一些问题。
问题1 ::
控制台显示错误消息:与类名同名的constructer已弃用。
我浏览每个php文件并找到类,然后用__construct(...)替换constructer函数
问题2 ::
控制台显示错误消息::无法将属性ID分配给$ attr 我去函数MergeCSS(...)中提交mPDF.php。我在第三行添加了新的代码行。
if(empty($ attr)){$ attr = array();}
问题3 ::
控制台显示以下错误消息:: “遇到非数字值”,第30648行。“
我解决这个问题的方法只是::
用函数ConvertSize()和multiplyFontSize()替换函数ConvertSize();
https://github.com/mpdf/mpdf/blob/development/src/SizeConverter.php
const SCALE = 72 / 25.4;
希望对遇到此问题的人有所帮助。
答案 0 :(得分:5)
对于想要完整的“遇到非数字值”修复的人。用commit查看我的mpdf 6.1.3的分叉回购。
答案 1 :(得分:2)
仅供参考:PHP7遇到带有多个默认块的switch语句时会抛出编译时错误。 mpdf在其switch语句中使用多个默认块。
答案 2 :(得分:0)
我遇到此错误是因为我在使用函数writeText
并将x
和y
传递为空字符串之前,在使用旧的mpdf版本和php 5.6之前可以正常工作。现在,我将其改为使用零。
答案 3 :(得分:0)
我的版本是 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;
答案 4 :(得分:0)
将边距设置为为我求解的数值
之前
$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',
]);