我担心的是我正在使用 dompdf (barryvdh/laravel-snappy) 和 laravel 生成 pdf,我想知道如何为所有生成的页面生成页眉和页脚集,因为可以生成多个页面。只有一个我没有问题,因为我在视图中添加了页眉和页脚结构(pdf/vista.blade.php),但在其他工作表中没有重复。
$pdf = \PDF::loadView('pdf.vista',['entidad'=>$request->dirigidoa,
'contacto'=>$request->persona,
'ciudad'=>$request->ciudad,
'referencia'=>$request->referencias,
'nombres'=>$nombres,
'descripcion'=>$descripcion,
'condicion'=>$condicion,
'created_at'=>$datetime]);
return $pdf->stream('archivo.pdf');
我想我理解你的担忧或需要。如果你仔细观察,你会使用 Laravel 内置的视图模板刀片系统来工作。因此,我的建议很简单。
就像您拥有所有 pdf 的“layout.pdf”或模板一样,对页眉和页脚执行完全相同的操作。
这是通过以下方式完成的。
在您放置页眉和页脚的位置:
@include('partials.pdf.header')
@include('partials.pdf.footer')
现在您生成一个名为“partials”或部分视图的文件夹,它们是您将要动态使用的刀片代码片段,或者另一方面,只是为了组织代码。
在文件夹
partials
中,您生成另一个要组织的文件,称为pdf
(因为我已经能够看到您的项目“layout.pdf”的结构,我假设在“模板中您有 pdf”,因为在部分中,另一个 pdf。好吧这已经是你组织的了。)现在,无论您要存储“页眉和页脚部分片段”,您都可以生成它们的刀片模板。
header.blade.php
和footer.blade.php
。这两个将只包含您想要放入所有 pdf 文件中的那一点点。
最后,在您的 PDF 视图中,如果您还记得的话,我们将
@include('partials.pdf.header')
@include('partials.pdf.footer')
这意味着它将在那里寻找部分块的路径并将其包含在内。因此,您已经可以修改 pdf 的其余部分,该模板将始终执行该标题。
现在,如果您想要的是动态标题,您还可以使用刀片逻辑,以便执行某些模板或其他模板。
例如,
@if($headerPdf == 'empresa1') @include('partials.pdf.headerEmpresa1') @else @include('partials.pdf.header') @endif
假设在这里我们在“else”中有一个标题,如果找不到任何匹配的先前案例,则会放置一个“默认情况下称为标题”。
如果您传递给 if 条件的变量(来自控制器)是正数,那么您将有另一个不同的标题。
我应该补充一点,如果您的视图或 pdf 是从没有或不知道您发送的变量“$headerPdf”的控制器运行的,那么从逻辑上讲,您可能会收到变量不存在的错误存在。
在我的情况下,当这种情况发生时,你可以用
isset()
@if(isset($headerPdf)) @if($headerPdf == 'empresa1') @include('partials.pdf.headerEmpresa1') @endif @else @include('partials.pdf.header') @endif
它的作用是检查变量是否存在或包含某些内容。但放手
尽管确实有更多方法可以使其动态化,例如直接从控制器发送变量并在图像中的标头中执行它们,例如图像路径,这样就可以了显示动态。
我希望它对你有帮助。问候 =)
PS:我建议您阅读有关刀片的文档,因为它具有非常有趣的方式来管理您的视图,对它们进行分组,组织它们并根据许多因素,变量或您真正喜欢的方式执行它们。所以我给你一个链接。
https://laravel.com/docs/5.6/blade
如果您的答案可以帮助其他用户更快地找到它,请记住给予正面评价。干杯