代码之家  ›  专栏  ›  技术社区  ›  Hammad

调用未定义的方法Dompdf\\FrameDecorator\\Page::add_line()

  •  1
  • Hammad  · 技术社区  · 5 月前

    我试图发送一封包含2个pdf附件的电子邮件,但在控制器中调用getRejectedReport方法时,它返回了错误信息,即调用未定义的方法Dompdf\FrameDecorator\Page::add_line(),而另一个方法getReport成功运行并生成作为附件放入电子邮件的pdf。

    得到这个 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);
        }
    
    }
    
    1 回复  |  直到 5 月前
        1
  •  1
  •   Bilal Maqsood    5 月前

    当您在下一代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);
    }