require_once("function/dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
foreach($modules as $module){
$output = "Hello " .$module['name'];
$dompdf->load_html($output);
$dompdf->render();
$output_pdf = $dompdf->output();
file_put_contents($dir . $name_modulo . ".pdf", $output_pdf);
}
致命错误:未捕获的异常' DOMPDF_Exception'使用消息'找不到块级父级。不好。'
答案 0 :(得分:6)
dompdf 文件夹> dompdf_config.custom.inc.php 文件>尝试取消注释该行
define(“DOMPDF_ENABLE_HTML5PARSER”,true);
同时替换不支持的html5标签&支持的属性,清除html错误以获得更好的结果
答案 1 :(得分:1)
转到配置文件dompdf_config.custom.inc.php并取消注释define(“DOMPDF_ENABLE_HTML5PARSER”,true);并检查,基本上它需要在配置文件中启用html5解析器。
答案 2 :(得分:1)
我不知道为什么关于(" DOMPDF_ENABLE_HTML5PARSER",true)的答案也被拒绝了。因为我花了30多个小时试图弄清楚为什么会在我的网站上发生这种情况,直到我遇到这个解决方案。所以我启用了" DOMPDF_ENABLE_HTML5PARSER"将其设置为" TRUE"如上所述。并且立即出现关于"没有找到块级父级的错误"已解决,我的脚本工作。也许第二个答案被否决,因为它重复了之前的答案(但是让一个人休息一下,为什么不对你?也许他没有看到它......)。或者也许" downvoter"有态度问题。
答案 3 :(得分:1)
只需从define("DOMPDF_ENABLE_HTML5PARSER", true);
此文件中取消注释dompdf_config.custom.inc.php
这一行。
您可以在vendor/dompdf/dompdf
此目录中找到codeigniter的此文件。
答案 4 :(得分:0)
只需定义
$dompdf->set_option('enable_html5_parser', TRUE);
我认为它将解决此问题。
或者可以编辑dompdf / dompdf_config.inc.php文件 转到第322行 改变
def("DOMPDF_ENABLE_HTML5PARSER", false);
到
def("DOMPDF_ENABLE_HTML5PARSER", true);
答案 5 :(得分:0)
该线程最新发布,但基于https://github.com/dompdf/dompdf/issues/902上的帖子,我能够通过删除<html><head>
,</head><body>
和</body></html>
之间的空格来解决此问题。 / p>
因此,与其像这样正确格式化html代码,还不如:
<html>
<head>
...
</head>
<body>
...
</body>
</html>
我删除了标记之间的所有新行或空格,现在看起来像这样:
<html><head>
</head><body>
</body></html>
一切又变得怪诞了
答案 6 :(得分:0)
如果您已使用composer require安装了dompdf,则如果您不想修改供应商文件夹,则使用set_option方法定义enable_html5_parser
选项会很好用
因此,将以下内容添加到每个正在创建错误的文档中
$dompdf->set_option('enable_html5_parser', TRUE);
答案 7 :(得分:0)
我在PHP 5.6上使用domPDF 0.8.3时遇到了同样的问题,找不到dompdf_config.custom.inc.php和dompdf_config.inc.php都没有用;为了解决我的问题,我在CSS中添加了{display:block;}正文,没有更多问题。
答案 8 :(得分:0)
我试图找到空白或其他空格。没有成功,所以 我只是最小化了PDF模板的HTML文件 它删除了所有空格,空格等 为我工作
答案 9 :(得分:0)
就我而言,这有点不同。
pdf创建代码在循环中,但dom pdf对象创建在循环上方。因此,当第二次尝试创建pdf时,我看到了上述错误。为了解决这个问题,每次我创建一个新对象时,它都按预期工作。
示例:
(代码不起作用)
//Reference of Dompdf namespace
use Dompdf\Dompdf;
use Dompdf\Options;
//instantiate and use the Options class
$options = new Options();
$options->set('enable_html5_parser', true);
$dompdf = new Dompdf($options);
for($i = 0; $i < $count; $i++) {
//Create PDF
$dompdf->loadHtml($form_data);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($pdf_file_name, $output);
}
工作代码:
//Reference of Dompdf namespace
use Dompdf\Dompdf;
use Dompdf\Options;
//instantiate and use the Options class
$options = new Options();
$options->set('enable_html5_parser', true);
for($i = 0; $i < $count; $i++) {
$dompdf = new Dompdf($options);
//Create PDF
$dompdf->loadHtml($form_data);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($pdf_file_name, $output);
}
答案 10 :(得分:0)
您可以如上所述启用HTML5解析器,也可以更新dompdf库。我发现将dompdf库从6.2更新到8.2可以克服此错误,但如果您使用的是Drupal,例如我,那么您就需要做一些技巧才能使Drupal识别该库的较新版本(请参阅此处:{{ 3}})