MPDF未定义索引错误

Posted

技术标签:

【中文标题】MPDF未定义索引错误【英文标题】:MPDF undefined index error 【发布时间】:2012-11-10 06:41:38 【问题描述】:

我正在使用 MPDF 库将 html 转换为 PDF。

这是我的代码。

$HTML = 'HTML CONTENT GOES HERE'; //HTML STRING

$MPDF->WriteHTML($html); // Converting

$MPDF->Output('preview.pdf','F'); //Saving to a File

它可以工作,但是在错误日志中产生了太多错误,

ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: BODY C:\wamp\www\crm\application\libraries\mpdf.php 14242
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: BODY>>ID>> C:\wamp\www\crm\application\libraries\mpdf.php 14288
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined offset: -1 C:\wamp\www\crm\application\libraries\mpdf.php 14421
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined variable: cstr C:\wamp\www\crm\application\libraries\mpdf.php 31951
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: DIV C:\wamp\www\crm\application\libraries\mpdf.php 14242
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: ID>>PRINT_WRAPPER C:\wamp\www\crm\application\libraries\mpdf.php 14280
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: DIV>>CLASS>>PRINTWRAPPER C:\wamp\www\crm\application\libraries\mpdf.php 14284
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: DIV>>ID>>PRINT_WRAPPER C:\wamp\www\crm\application\libraries\mpdf.php 14288
ERROR - 2012-11-10 04:45:50 --> Severity: Notice  --> Undefined index: DIV C:\wamp\www\crm\application\libraries\mpdf.php 14242

有人对这个库有一些工作经验吗? (如果它只输出一些错误,那么我们可以通过更改库来修复它,但这里它给出了太多错误),我认为我错过了一些东西。

请帮帮我。

谢谢。

【问题讨论】:

10 年后...你能添加你正在使用的 HTML 吗? 【参考方案1】:

在 mpdf.php 顶部添加以下内容

error_reporting(0); 

这将解决问题。

【讨论】:

这不会解决问题,只会隐藏它。【参考方案2】:

HTML 格式是否正确,所有标签和属性都是小写还是大写?以下是 MPDF 文档中对 HTML 的要求:

HTML 属性示例:

mPDF 支持单引号或双引号中的属性值,例如

不支持最小化的属性,例如

建议使用 XHTML 规范以最好地符合 mPDF。

同样根据https://mpdf.github.io/html-support/html-tags.html

您似乎正在使用不受支持的标签。例如 BODY 不是。

我会尝试将我的 HTML 限制为文档列表中的那些,并遵循他们格式良好的指南,看看错误是否以这种方式得到修复。它们只是“通知”,所以没有什么严重的,但最好修复它们,以防未来的版本不那么宽容。

【讨论】:

FWIW,我在向mpdf.css 添加样式时也遇到了类似的情况。对我来说,这是我试图将 border: 1mm solid #333 添加到 tr 元素 (tr, td, th) 并且引发错误。我没有找到足够的 CSS 验证器来使用,但请注意,CSS 的格式必须与 HTML 一样好【参考方案3】:

仍然没有找到真正的解决方案(有人吗?)。作为一种变通方法,我直接在近 20 个地方修补了 mpdf.php。

之前:

$variable[possible_wrong_index];

之后:

(isset($variable[possible_wrong_index]))?$variable[possible_wrong_index]:false;

有些 if 语句比较棘手。但现在我在日志中没有错误,生成的 pdf 似乎不受此影响。

(我知道这是一个 hacky 解决方法,但它暂时有效 - 真正的乐趣始于 mpdf 的更新 :)

【讨论】:

【参考方案4】:

我遇到了同样的问题。 HTML 代码格式正确,但没有帮助。 我修改了 mpdf.php 类。我添加了检查,是否在每个报告的行上设置了索引。 像这样

if(isset($p[$tag]))
      $this->_mergeCSS($p[$tag], $t);
    

【讨论】:

【参考方案5】:

我不知道为什么会发生这种情况,但我遇到了同样的问题,我解决了它,将“include 'MPDFxx/mpdf.php' 放在我调用 WriteHTML 函数的函数顶部。顺便说一句,我使用 MPDF57 找到了它。

【讨论】:

【参考方案6】:

如果表格在 html 视图中使用。而不是确保 td 标签在 tr 标签内。

否则 mpdf 会返回未定义的索引:l

【讨论】:

【参考方案7】:

您可以使用此工具检查不可打印的字符:

https://www.soscisurvey.de/tools/view-chars.php

这解决了我的问题。

【讨论】:

以上是关于MPDF未定义索引错误的主要内容,如果未能解决你的问题,请参考以下文章

调用未定义函数 Mpdf\\Mpdf()

mpdf 不工作 [致命错误:未找到特征'Mpdf\Strict']

无法连接到本地 PHP 站点(未定义索引和未定义变量错误)[重复]

会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]

错误(索引):74 未捕获的类型错误:无法设置未定义的属性“cmd”

未捕获的类型错误:无法设置未定义的属性“索引”