我正在开发使用库MPDF从HTML代码生成PDF的代码。对于HTML代码,我正在从外部HTML文件中读取。但它不适用于更大的HTML代码大小。有没有办法解决它或我们有任何其他库支持我的功能。
对于较大的html文件给出错误:
致命错误:未捕获的Mpdf \ MpdfException:HTML代码大小大于pcre.backtrack_limit 1000000.您应该使用较小字符串长度的WriteHTML()。
答案 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