我几个小时都一直在努力......
我尝试使用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;
所以..几乎卡在这里..如果有人知道如何进一步调试,我会采取任何建议!
由于
答案 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);
。