未捕获的Mpdf \ MpdfException:HTML代码大小大于pcre.backtrack_limit 1000000

时间:2018-03-05 18:11:33

标签: php mpdf html-to-pdf

我正在开发使用库MPDF从HTML代码生成PDF的代码。对于HTML代码,我正在从外部HTML文件中读取。但它不适用于更大的HTML代码大小。有没有办法解决它或我们有任何其他库支持我的功能。

对于较大的html文件给出错误:

  

致命错误:未捕获的Mpdf \ MpdfException:HTML代码大小大于pcre.backtrack_limit 1000000.您应该使用较小字符串长度的WriteHTML()。

3 个答案:

答案 0 :(得分:6)

导出大文档时,我遇到了同样的问题。我按照Finwe的建议,通过将要导出的html分成小块来解决此问题。这是伪代码:

在我要导出的html文件中,我插入了一个标记,以后将用于分割html。在这种情况下,我使用单词chunk:

<body>
@if (count($doc_items) > 0)
@foreach($doc_items as $item)
chunk
<div>
     {{-- Item text here --}}
</div>
</body>

在控制器端,我修改了以下参数以防万一,尽管根据导出大小,它可能不是必需的:

ini_set('max_execution_time', '300');
ini_set("pcre.backtrack_limit", "5000000");

然后处理html:

$chunks = explode("chunk", $html);
foreach($chunks as $key => $val) {
    $mpdf->WriteHTML($val);
}

答案 1 :(得分:4)

错误消息告诉您该怎么做。将您的HTML以较小的块传递给WriteHTML()方法。

或者你可以尝试更多地增加你的回溯限制:

ini_set("pcre.backtrack_limit", "5000000");

https://mpdf.github.io/troubleshooting/known-issues.html#blank-pages-or-some-sections-missing

答案 2 :(得分:2)

您要提供非常大的html代码。它不会被接受。 参见https://mpdf.github.io/troubleshooting/known-issues.html#blank-pages-or-some-sections-missing