【问题标题】:Laravel PDF: No block-level parent found. Not goodLaravel PDF:找不到块级父级。不好
【发布时间】:2018-06-17 04:52:15
【问题描述】:

直到今天,我的代码都运行良好。我没有改变任何东西,但突然我的 pdf 代码不起作用。我在laravel 5.2 中使用barryvdh/laravel-dompdf 这个包。

我删除了我的本地项目并从实时服务器下载,但这个问题仍然出现在我的本地计算机上。我的实时项目可以很好地使用此代码。

这是我的代码

$pdf = App::make('dompdf.wrapper');
$pdf->loadView('back_end.pdf_template.make_invoice', ['order_info' =>$order_info, 'order_details' => $order_details]);
return $pdf->stream('inv-' . $order_info->invoice_id . '.pdf');

我收到此错误

我也尝试将enable_html5_parser 设置为true。在此之后,我收到另一个错误

【问题讨论】:

    标签: php laravel pdf laravel-5.2 dompdf


    【解决方案1】:

    未找到块级父级。不好。这是解析器错误

    你好朋友,

    删除html、head、body标签之间的空格即可修复,如下图:

    有效:

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

    失败了:

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

    当我更新我的 php 时,我遇到了同样的问题,使用相同的 laravel 版本 从 5.6 到 7.0 版本。

    当我尝试生成 pdf 文件时,消息被抛出:

    未找到块级父级。不好。

    这个解决方案是在这个 github 页面中找到的

    https://github.com/dompdf/dompdf/issues/1582#issuecomment-359448550

    希望对你有用

    【讨论】:

    • 谢谢!我有一个工作多年的网站(不是 Laravel,自定义 PHP)突然停止工作。这解决了它。任何想法为什么这有效?
    • @texelate,我认为解析器在找到换行符时有问题,我不知道。幸运的是我找到了这个解决方案,我浪费了一些时间来解决这个问题。
    • 我在将php版本升级到php 7后遇到了这个问题。通过这个html结构的改变,解决了我的问题。不需要升级 dompdf。谢谢
    • 除此之外还有其他解决方案吗?这似乎没有帮助
    • 对不起@AbdurRahmanTurawa,我不知道任何其他解决方案。我花了很多时间来解决这个问题,幸运的是我在上面提到的链接中找到了解决方案。这对我有用。
    【解决方案2】:

    有同样的问题,对我来说,这是由于html 标签未被检测为块级父级引起的。 必须添加以下 CSS 来修复它:

    html, body {
        display: block;
    }
    

    【讨论】:

    • 在 Laravel 8 中工作过。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 2015-08-14
    • 2016-04-10
    • 2018-05-25
    相关资源
    最近更新 更多