Dompdf"没有找到块级父级" (已启用html5解析器并删除了空白区域..)

时间:2018-02-09 20:48:40

标签: php laravel dompdf

我几个小时都一直在努力......

我尝试使用Dompdf和barryvdh包装器从Laravel视图生成PDF ..

两者都使用0.8.2版本。我阅读了无数帖子,提到启用HTML 5解析器(它已经完成并用" $ pdf-> getDomPDF() - > get_option(' enable_html5_parser')&&进行了双重检查) #34;返回true)。我还阅读了很多关于空白区域的问题 - 我已经修剪了每个单独空格/新行/等我可以在html标签之间通过在barryvdh的loadView函数中添加它来找到它:

$html = str_replace("\n", "", $html);
$html = str_replace("\r", "", $html);
$html = str_replace("\t", "", $html);
$html = trim(preg_replace( '/>\s+</', '><', $html )); 

我&#34; dd-ed&#34;生成的$ html并检查html标签之间是否有任何空格..

然而,我仍然得到了好老的&#34;没有找到块级父级。不好。&#34;

所以..几乎卡在这里..如果有人知道如何进一步调试,我会采取任何建议!

由于

2 个答案:

答案 0 :(得分:0)

好的进一步调查......问题似乎与

有关
body {
  display: flex;
}

所以..没有弯曲身体。

另外,似乎dompdf不支持flexbox布局,但无论如何,它们都被渲染为不可见(cf https://github.com/dompdf/dompdf/issues/971)所以..这就是我的答案。

答案 1 :(得分:0)

变化:

public function loadView($view, $data = array(), $mergeData = array(), $encoding = null){
    $html = $this->view->make($view, $data, $mergeData)->render();
    return $this->loadHTML($html, $encoding);
}

要:

public function loadView($view, $data = array(), $mergeData = array(), $encoding = null){
    $html = $this->view->make($view, $data, $mergeData)->render();
    $html = preg_replace('/>\s+</', '><', $html);
    return $this->loadHTML($html, $encoding);
}

在/vendor/barryvdh/laravel-dompdf/src/PDF.php

注意:第二个$html = preg_replace('/>\s+</', '><', $html);