我试图发送一封包含2个pdf附件的电子邮件,但在控制器中调用getRejectedReport方法时,它返回了错误信息,即调用未定义的方法Dompdf\FrameDecorator\Page::add_line(),而另一个方法getReport成功运行并生成作为附件放入电子邮件的pdf。
得到这个 Call to undefined method Dompdf\\FrameDecorator\\Page::add_line()
Call to undefined method Dompdf\\FrameDecorator\\Page::add_line()
我对这两个pdf刀片文件有几乎相同的代码和相同的逻辑。这是我的示例代码。。。。
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); }