Laravel - 将使用 TailwindCSS 样式的视图输出为 PDF

IGP*_*IGP 6 dompdf tcpdf mpdf laravel tailwind-css

我正在尝试从视图生成 pdf,但样式就是不出来。我尝试过使用 3 个不同的库,但结果并没有太大不同。我错过了什么吗?

view

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Test View</title>
  <link rel="stylesheet" type="text/css" media="screen" href="{{ asset('css/app.css') }}">
  <script src="{{ asset('js/app.js') }}" defer></script>
</head>
<body class="font-sans antialiased">

<div class="grid grid-cols-3">
  <div class="bg-red-200 col-span-2 h-screen"></div>
  <div class="bg-blue-200 h-screen">
    <div class="grid grid-cols-8">
      <div class="col-span-7">
        <div class="rounded-t-full w-full h-screen flex items-center justify-center bg-green-600">
          <div class="h-60 w-60 rounded-full bg-blue-500">TEST</div>
        </div>
      </div>
    </div>
  </div>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

appearance

在此输入图像描述


dompdf export method

protected function dompdfImplementation()
{
    $dompdf = new Dompdf;
    $dompdf->getOptions()->setChroot(public_path());
    $dompdf->loadHtml(view('view')->render());

    $dompdf->stream('view.pdf', ['Attachment' => false]);
}
Run Code Online (Sandbox Code Playgroud)

dompdf export result

在此输入图像描述


mpdf export method

protected function mpdfImplementation()
{
    $mpdf = new Mpdf;
    $mpdf->WriteHTML(view('view')->render());

    $mpdf->output();
}
Run Code Online (Sandbox Code Playgroud)

mpdf export result

在此输入图像描述


tcpdf export method

protected function tcpdfImplementation()
{
    $tcpdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
    $tcpdf->AddPage();
    $tcpdf->writeHTML(view('view')->render());

    $tcpdf->Output('view.pdf', 'I');
}
Run Code Online (Sandbox Code Playgroud)

tcpdf export result

在此输入图像描述


如果没有 css 内联,是否无法将视图导出为 pdf?

我是否最好手动截取整页屏幕截图,将其粘贴到文本文档中并将其另存为 pdf 文件?

IGP*_*IGP -6

  • 尝试barryvdh/laravel-dompdf而不是dompdf/dompdf
  • media="print"在我的样式表上使用
  • 使用 TailwindCSS 的print:*
  • 试图去chrome-php上班却无济于事
  • 尝试barryvdh/excel导出 pdf。

没有任何效果,所以我达成的解决方案是一个糟糕的解决方案。

  1. 在 Firefox 中打开视图。
  2. 截取整个页面(不仅仅是可见内容)。
  3. 使用我找到的第一个在线 PNG 到 PDF 转换器。

我希望有一种不那么痛苦的方法来做到这一点,但看起来并非如此。这个糟糕的解决方案实际上有效。

  • 如果这是一个可接受的解决方案,为什么不直接使用 PDFCreator 等将页面打印为 PDF? (3认同)