升级到 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】:

我遇到了这个错误,因为我使用函数 writeTextxy 作为空字符串传递,之前使用旧的 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 行遇到非数字值的主要内容,如果未能解决你的问题,请参考以下文章

mPDF 错误:一些数据已经输出到浏览器

mPDF 库不适用于 php7.2 codeigniter

mpdf 错误地显示 ascii<115

Mpdf 不在移动设备上生成 PDF。在台式机上完美运行

Centos 7平滑无缝升级PHP7.1.0到PHP 7.1.5

MPDF pdf 未在任何浏览器中打开,Codeigniter 中未显示错误