【问题标题】:PDF generation php - Pass data each time or use template?PDF生成php - 每次传递数据或使用模板?
【发布时间】:2018-05-23 01:14:48
【问题描述】:

我正在用 php.ini 制作一个 pdf 文件。目前使用 dompdf 但愿意接受建议。数据也将从数据库中检索。++// 引用 Dompdf 命名空间 使用 Dompdf\Dompdf;

我正在制作一个表单,在其中使用登录人的用户名填充字段

每次都制作PDF:(只是举例)发现很难将php变量与html代码结合起来制作一个完整的文档

$variable= Variable::findOrFail(session('id'));

$dompdf = new Dompdf();
$dompdf->loadHtml('$variable');
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream();

或者我应该制作一个视图,然后将其转换为 pdf?

$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');

【问题讨论】:

  • 查看似乎是最佳选择
  • @devk 将变量传递给 pdf 的最佳方式是什么? $pdf = PDF::loadView('sell.contract', $variable);
  • @user9820353 我这样传递变量:$pdf = PDF::loadView('pdfme', compact('input', 'cffEvents', 'cffEvents2')); with compact。

标签: php laravel pdf dompdf


【解决方案1】:
  1. 如果您的模板不包含 JS 及其功能,如果您在视图中使用模板,DomPDF 是一个不错的选择。但是,(只是一个额外的信息),如果您的模板使用 JS,例如:绘制电荷,元素动画,...,您应该 wkhtmltopdf。

  2. 您使用的 loadView 方法将在将数据传递给视图之前使用 extract 方法。此方法提取所有数组元素,并根据元素的键为它们创建变量。因此,当您传递像['a' => 'aVal'] 这样的数组时,您可以在模板中使用$a 变量(这将返回aVal)。在您的情况下,使用$data = ['variable' => $variable] 是正确的方法。

而且,如果你想传递多变量:$data = ['var1' => $var1, 'var2' => $var2, etc]。祝你好运!

【讨论】:

    猜你喜欢
    • 2018-11-05
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2012-04-14
    • 2021-12-26
    相关资源
    最近更新 更多