将多个文件收集到一个 PDF 中
Collect multiple files into single PDF
我在我的项目中使用 barryvdh laravel-dompdf 包。
用户可能会生成带有一些个人信息的 PDF,直到这里一切正常:
$pdf = PDF::loadView('personalInfo', $userData);
$pdfFileName = "personal-info-{$userData['username']}.pdf";
return $pdf->download($pdfFileName);
管理员应该能够下载用户信息,如果选择多个用户,而不是生成多个文件,我想将所有用户的 PDF 收集到一个文件中。
我该怎么做?
您可以像下面这样创建
例如,您有 personalInfo
blade 模板,现在用于特定用户。因此循环该视图并将其存储在数组中,如下所示
$pages=[];
foreach($userDataList as $key=>$userData){
$pages[]=(string)view('personalInfo', $userData);
}
$pdf = App::make('dompdf.wrapper');
$pdf->loadView('index', ['pages' => $pages]);
return $pdf->stream();
然后你可以创建单独的 blade 模板来显示这些 views.Here 我将其命名为 index.blade.php
<style type="text/css" media="print">
div.page
{
page-break-after: always;
page-break-inside: avoid;
}
</style>
@foreach($pages as $page)
<div class="page">
{!! html_entity_decode($page) !!}
</div>
@endforeach
方法:2
循环 personalInfo blade 模板中的所有用户详细信息,并在每个循环的末尾添加以下分页符样式
<p style="page-break-before: always;"></p>
个人信息中的例子blade
@foreach($pages as $page)
personal information content
<p style="page-break-before: always;"></p>
@endforeach
此外,我个人更喜欢 laravel snappy 用于多个页面,因为它呈现速度比 laravel dompdf.Only 如果您使用 windows,服务器配置有点头疼
参考:https://github.com/barryvdh/laravel-snappy
我在我的项目中使用 barryvdh laravel-dompdf 包。
用户可能会生成带有一些个人信息的 PDF,直到这里一切正常:
$pdf = PDF::loadView('personalInfo', $userData);
$pdfFileName = "personal-info-{$userData['username']}.pdf";
return $pdf->download($pdfFileName);
管理员应该能够下载用户信息,如果选择多个用户,而不是生成多个文件,我想将所有用户的 PDF 收集到一个文件中。
我该怎么做?
您可以像下面这样创建
例如,您有 personalInfo
blade 模板,现在用于特定用户。因此循环该视图并将其存储在数组中,如下所示
$pages=[];
foreach($userDataList as $key=>$userData){
$pages[]=(string)view('personalInfo', $userData);
}
$pdf = App::make('dompdf.wrapper');
$pdf->loadView('index', ['pages' => $pages]);
return $pdf->stream();
然后你可以创建单独的 blade 模板来显示这些 views.Here 我将其命名为 index.blade.php
<style type="text/css" media="print">
div.page
{
page-break-after: always;
page-break-inside: avoid;
}
</style>
@foreach($pages as $page)
<div class="page">
{!! html_entity_decode($page) !!}
</div>
@endforeach
方法:2
循环 personalInfo blade 模板中的所有用户详细信息,并在每个循环的末尾添加以下分页符样式
<p style="page-break-before: always;"></p>
个人信息中的例子blade
@foreach($pages as $page)
personal information content
<p style="page-break-before: always;"></p>
@endforeach
此外,我个人更喜欢 laravel snappy 用于多个页面,因为它呈现速度比 laravel dompdf.Only 如果您使用 windows,服务器配置有点头疼 参考:https://github.com/barryvdh/laravel-snappy