我想在laravel中使用ddompdf下载多个pdf文件,但下面的解决方案只是将其连接成一个pdf文件。
$weeks = ['test','test2'];
$html = '';
foreach($weeks as $hours)
{
$view = view('contract');
$html .= $view->render();
}
$pdf = PDF::loadHTML($html);
$sheet = $pdf->setPaper('a4', 'landscape');
return $sheet->download('download.pdf');
服务器只能返回一个响应,如果你想要多个pdf文件,你应该修改你的方法,使它接受一些参数,并为每个参数生成一个pdf文件。
在一个HTTP请求中不可能下载多个文件。
你可以做的是将文件打包成o zip并下载。你可以尝试 https:/github.comzanysoftlaravel-zip。 或任何其他可用的解决方案。
另一个选择是保存文件,并只返回保存文件的路径给客户端。然后提出一个新的请求,并为每个返回的文件路径下载文件。
另外,如果你想保存为单独的PDF文件,你需要将PDF创建移到你的foreach循环中(为每个参数创建一个PDF)。
$weeks = ['test','test2'];
$files = [];
foreach($weeks as $hours)
{
$view = view('contract');
$html = $view->render();
$pdf = PDF::loadHTML($html);
$pdf->setPaper('a4', 'landscape');
$pdf->save('documents/'.$hours.'.pdf');
$files[] = 'documents/'.$hours.'.pdf';
}
return response()->json(['files' => $files]);
在这种情况下,foreach除了产生两个相同的PDF文件外,并没有真正做任何事情。如果你想实际应用某种变化到你的视图基于在 $weeks
你需要把这一点传递给你的观点。
$view = view('contract', ['data' => $hours]);
这使得 $data
您可以在您的视图中使用,并以这种方式更改生成的 PDF 文件(如果您需要更多相关帮助,请显示您的 contract.blade.php)。