Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Dompdf错误“;未找到块级父级。不好。”;_Php_Dompdf - Fatal编程技术网

Php Dompdf错误“;未找到块级父级。不好。”;

Php Dompdf错误“;未找到块级父级。不好。”;,php,dompdf,Php,Dompdf,致命错误:未捕获异常“DOMPDF_exception”,消息为“未找到块级父级”。不太好 转到配置文件dompf_config.custom.inc.php并取消注释define(“dompf_ENABLE_HTML5PARSER”,true);检查一下,基本上它需要在您的配置文件中启用html5解析器。dompdf文件夹>dompdf\u config.custom.inc.php文件>尝试取消注释该行 require_once("function/dompdf/dompdf_config.

致命错误:未捕获异常“DOMPDF_exception”,消息为“未找到块级父级”。不太好


转到配置文件dompf_config.custom.inc.php并取消注释define(“dompf_ENABLE_HTML5PARSER”,true);检查一下,基本上它需要在您的配置文件中启用html5解析器。

dompdf文件夹>dompdf\u config.custom.inc.php文件>尝试取消注释该行

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);

}

还可以用支持的html错误替换不支持的html5标记和属性,以获得更好的结果

我不知道为什么关于“DOMPDF\u ENABLE\u HTML5PARSER”,true)的答案也被否决了。因为我花了30多个小时试图弄清楚为什么我的网站会出现这种情况,直到我找到了这个解决方案。因此,我通过如上所述将“DOMPDF\u ENABLE\u HTML5PARSER”设置为“TRUE”来启用它。关于“未找到块级父级”的错误立即得到解决,我的脚本正常工作。也许第二个答案被否决了,因为它重复了前一个答案(但让一个人休息一下,你为什么不呢?也许他没有看到…)。或者“向下投票人”的态度有问题。

只需取消注释
define(“DOMPDF\u ENABLE\u HTML5PARSER”,true)
此行来自
dompdf\u config.custom.inc.php
此文件

您可以在此目录中找到codeigniter的此文件

只需定义

define("DOMPDF_ENABLE_HTML5PARSER", true);
我认为它会解决这个问题

或者可以编辑dompdf/dompdf_config.inc.php文件 去322号线 改变


到了这个帖子的后期,但基于上的帖子,我能够通过删除
之间的空格来解决这个问题

因此,与其使用如下格式正确的html代码:

def("DOMPDF_ENABLE_HTML5PARSER", true);

...
...
我删除了标记之间的所有新行或空格,现在看起来如下所示:

<html>
<head>
...
</head>
<body>
...
</body>
</html>


如果您已经使用composer require安装了DOMPF,那么如果您不想修改供应商文件夹,那么使用set_option方法定义
enable_html5_parser
选项会很好

因此,将以下内容添加到每个创建错误的文档中

<html><head>
</head><body>
</body></html>

我在PHP5.6上的domPDF 0.8.3也有同样的问题,我既找不到domPDF_config.custom.inc.PHP,也找不到domPDF_config.inc.PHP,也不起作用;为了解决我的问题,我在CSS中添加了body{display:block;},没有进一步的问题。

我尝试定位空白或其他空格。没有成功,所以 我只是最小化了HTML文件,它是一个PDF模板 它删除了所有空格、空白等
为我工作

在我的情况下,有点不同

pdf创建代码在循环中,但dom pdf对象创建在循环之上。所以当它第二次尝试创建pdf时,我看到了上面的错误。为了解决这个问题,每次我创建一个新对象时,它都按预期工作

例如:

(代码不工作)

//Dompdf名称空间的引用
使用Dompdf\Dompdf;
使用Dompdf\Options;
//实例化并使用Options类
$options=新选项();
$options->set('enable_html5_parser',true);
$dompdf=新的dompdf($options);
对于($i=0;$i<$count;$i++){
//创建PDF
$dompdf->loadHtml($form_data);
$dompdf->setPaper('A4','scape');
$dompdf->render();
$output=$dompd->output();
文件内容($pdf文件名,$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);

$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);
}
//Dompdf名称空间的引用
使用Dompdf\Dompdf;
使用Dompdf\Options;
//实例化并使用Options类
$options=新选项();
$options->set('enable_html5_parser',true);
对于($i=0;$i<$count;$i++){
$dompdf=新的dompdf($options);
//创建PDF
$dompdf->loadHtml($form_data);
$dompdf->setPaper('A4','scape');
$dompdf->render();
$output=$dompd->output();
文件内容($pdf文件名,$output);
}

您可以如上所述启用HTML5解析器,也可以更新dompdf库。我发现将dompdf库从6.2更新到8.2已经克服了这个错误,但是如果您像我一样使用Drupal,那么您需要做一些小技巧才能让Drupal识别库的较新版本(请参见此处:)

可能重复@dragoste,谢谢!在cycle works中创建单个DOMPDF实例。。为什么?正如上面链接下的回答中所提到的,DOMPDF类本身并没有正确地清理。我不知道任何细节。@dragoste,既然链接问题中没有(被接受的)答案,也许这应该保持开放和回答?这对meI有效,因为我看不出你的两个代码之间有什么区别。没有看到描述,没有正确描述你如何评论没有区别,以及你如何否决它。Dompdf对象在非工作代码中处于循环之外。在工作代码中,它在循环中移动。我认为没有必要多次实例化DomPdf,除非您使用不同的选项。我可以通过升级DomPdf来解决我的问题。如果使用PHP7,情况尤其如此。版本将一直保持升级,您不知道我使用的是哪个版本。最初你说你没有看到区别。现在您的意思是不需要在升级版本上多次实例化DomPdf。不知道我使用的版本,你怎么能投反对票呢。我确信您没有检查每个dompdf版本。我已经清楚地提到,单一的实例化对我来说不起作用。如果你在一个特定的库或软件上评论或回答了很久之后,通常会有一个更新,而不知道它的版本,你怎么能评论呢。这一行在我的dompdf_config.custom.inc.php中不存在,添加它只会引发一个关于已经发送的头的新错误。不确定是否相关,因为上面写着“自动”
<html><head>
</head><body>
</body></html>
$dompdf->set_option('enable_html5_parser', TRUE);
//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);
}