升级到PHP7.1并且MPDF显示错误 - 在第30648行遇到非数字值

时间:2017-05-16 06:52:14

标签: mpdf

我长时间使用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行。“

我解决这个问题的方法只是::

  1. 使用MPDF7编码替换mPDF.php文件中的mPDF-> ConvertSize()函数。
      
        

    用函数ConvertSize()和multiplyFontSize()替换函数ConvertSize();

      
  2. https://github.com/mpdf/mpdf/blob/development/src/SizeConverter.php

    1. 将常量添加到mPDF类
    2.   
          

      const SCALE = 72 / 25.4;

        

      希望对遇到此问题的人有所帮助。

5 个答案:

答案 0 :(得分:5)

对于想要完整的“遇到非数字值”修复的人。用commit查看我的mpdf 6.1.3的分叉回购。

答案 1 :(得分:2)

仅供参考:PHP7遇到带有多个默认块的switch语句时会抛出编译时错误。 mpdf在其switch语句中使用多个默认块。

答案 2 :(得分:0)

我遇到此错误是因为我在使用函数writeText并将xy传递为空字符串之前,在使用旧的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',
    ]);