【发布时间】:2014-10-26 00:02:12
【问题描述】:
我正在尝试创建可以下载和打印的批量 pdf 发票(使用:barryvdh/laravel-dompdf)。通过电子邮件发送发票很容易,因为“发送”命令在循环中完美运行,并将附加当前创建的 pdf,但 $pdf->download() 需要返回响应——我尝试下载而不“返回”得到一个错误消息,并且“返回”当然会打破循环。由于我的发票很复杂,我正在使用
$pdf->loadView('invoices.show',$data);
使用视图创建发票,而不是尝试在控制器中编写所有 html。我可以将所有发票合并成一个多页的 pdf。我了解使用 css style="page-break-after" 创建不同页面的技巧,但是当我使用 loadView 以发送特定于页面的 $data 而不是loadHtml -- loadView 总是只包含最后一张发票。
例如控制器:
public function invoices()
{
$pdf = App:make('dompdf');
for($i=0; $i<4; $i++) {
$data = array('i'=>$i);
}
$pdf->loadView('invoices.show',$data);
return $pdf->download("Invoice");
}
(我在这里的示例 $data 数组中只包含一个变量;真实的发票显然有很多 $data 变量。)
视图,包裹在:
<div style="page-break-after:always;">
仅返回,其中 Invoice # = $i
Invoice #3
当然,将 $pdf->loadView 放入循环中的效果完全相同。而且由于 $pdf 不是字符串,因此在循环中尝试类似 $pdf .= ... 是行不通的。
感谢您的任何建议。
【问题讨论】: