【问题标题】:How I can convert a blade content into PDF?如何将刀片内容转换为 PDF?
【发布时间】:2021-03-29 23:27:58
【问题描述】:

在我的 laravel 项目中,我有以下 myview.blade.php 内容:

<!DOCTYPE html>
<html lang="en">
<head>
     <meta charset="UTF-8">
    <title>{{ __('menu.title') }}</title>
</head>
<body>
 {{__('content') }}
</body>

但我不想将其呈现为 http 响应,而是希望能够从中生成一个 pdf 文件。你知道我该怎么做吗?

【问题讨论】:

    标签: php laravel-blade laravel-5.7


    【解决方案1】:

    您将需要使用 HTML 到 PDF 库(例如 DOMPDF)来进行 HTML 的实际转换 -> PDF

    https://github.com/dompdf/dompdf

    要从刀片视图中获取 HTML,您可以:

    $html = view('path/to/view', ['vars' =&gt; 'hello'])-&gt;render();

    【讨论】:

      【解决方案2】:

      我使用了很多解决方案,包括 DOMPDF,但平均而言,WKHTMLTOPDF 生成的输出比 DOMPDF 好得多。

      WKHTMLTOPDF 更精确地遵循 CSS 规则。

      好吧,wkhtmltopdf 是一个命令行程序,它接受一个 html 文件作为参数,所以你只需要安装它就可以开始使用了。它有适用于 Linux 和 Windows 的软件包。

      到代码

      从您的视图中生成所需的 html,如下所示:

      $html = view('my_view', $arr);
      

      将 HTML 写入临时文件:

      $temp_file = tempnam(sys_get_temp_dir(), 'pdf_');
      file_put_contents($temp_file, $html);
      

      在 wkhtmltopdf 上运行 exec():

      $pdf_file = $temp_file . '.pdf';
      exec('wkhtmltopdf ' . $temp_file . ' ' . $pdf_file);
      

      下载您的$pdf_file

      要开心。

      【讨论】:

        猜你喜欢
        • 2022-10-08
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 2011-08-13
        • 2020-02-04
        • 2017-05-29
        • 1970-01-01
        • 2018-03-28
        相关资源
        最近更新 更多