![](/img/trans.png)
[英]How I can convert a dynamic blade content into PDF with mPDF in Laravel 7?
[英]How I can convert a blade content into PDF?
在我的 Laravel 项目中,我有以下 myview.blade.php 内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ __('menu.title') }}</title>
</head>
<body>
{{__('content') }}
</body>
但不是将其呈现为 http 响应,而是希望能够从中生成 pdf 文件。 你知道我怎么做吗?
您将需要使用 HTML 到 PDF 库(例如 DOMPDF)来进行 HTML -> PDF 的实际转换
https://github.com/dompdf/dompdf
要从刀片视图中获取 HTML,您可以执行以下操作:
$html = view('path/to/view', ['vars' => 'hello'])->render();
我使用了许多解决方案,包括 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
。
要开心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.