我正在尝试发送一封带有 2 个 pdf 附件的电子邮件,但是当在控制器中调用 getRejectedReport 方法时,它返回错误,指出 Call to undefined method Dompdf\FrameDecorator\Page::add_line() 而另一个方法 getReport 成功运行并生成pdf 作为附件包含在电子邮件中。
得到这个
Call to undefined method Dompdf\\FrameDecorator\\Page::add_line()
对于两个 pdf Blade 文件,我有几乎相同的代码和相同的逻辑。这是我的示例代码....
class ChecklistController extends AppBaseController
{
protected $pdf;
public function __construct(
ComplaintRepository $compRepository,
PDf $pdf,
) {
$this->compRepository = $compRepository;
$this->pdf = $pdf;
}
public function getReport($id, $type = 'stream')
{
$view = 'pdf.report';
$filePath = app()->basePath() . '/public/uploads/pdf';
$pdf = $this->pdf->loadView($view, [
'content' => $data,
])->setPaper('a4');
$pdf->setWarnings(false)->save($filePath);
}
public function getRejectedReport($id, $type = 'stream')
{
$view = 'pdf.rejected-report';
$filePath = app()->basePath() . '/public/uploads/pdf';
$pdf = $this->pdf->loadView($view, [
'content' => $data,
])->setPaper('a4');
$pdf->setWarnings(false)->save($filePath);
}
}
这是当您为下一代 pdf 使用相同的 $pdf 实例时出现的常见问题。
所以最好使用新的 PDF 实例更改您的方法,请参阅以下代码
创建一个新的 PDF 实例,如 **$pdf = app(PDF::class); **
public function getRejectedReport($id, $type = 'stream')
{
$view = 'pdf.rejected-report';
$filePath = app()->basePath() . '/public/uploads/pdf';
// Make a fresh instance of pdf here
$pdf = app(PDF::class)->loadView($view, [
'content' => $data,
])->setPaper('a4');
$pdf->setWarnings(false)->save($filePath);
}