试图从命名空间“Mpdf”加载类“Mpdf”

我正在使用 PHPSpreadsheet 创建 Excel。我想生成 Excel 文件,然后将 Excel 文件转换为 PDF 文件。所以我做了以下事情:


use PhpOffice\PhpSpreadsheet\IOFactory;

use PhpOffice\PhpSpreadsheet\Reader\Xlsx;

use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;

use PhpOffice\PhpSpreadsheet\Reader\Exception;


class DevisGenerator

{

public function runDevis()

    {

       $spreadsheet = $this->loadexcelTemplate();

       $uuid = $this->uniqidReal();

       $filename = $this->writeName($spreadsheet, $uuid);

       $this->convertPdf($spreadsheet, $filename);


    }


    public function writeName($spreadsheet, $uuid)

    {

        $worksheet = $spreadsheet->getActiveSheet();

        $worksheet->getCell('B2')->setValue('Toto');


        try {

            $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');

            $filename = $uuid;

            $writer->save($filename.'.xlsx');

        }catch (Exception $e)

        {

            //TODO gestion erreur

        }

        return $filename;


    }



public function convertPdf($spreadsheet, $filename)

    {

        $writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);

        $writer->save($filename.'.pdf');




    }


但是当我运行代码时出现以下错误:


试图从命名空间“Mpdf”加载类“Mpdf”。您是否忘记了“PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf”的“使用”语句?


我不明白这个错误,我已经在我的代码中正确插入了 use 语句。任何想法 ?


慕丝7291255
浏览 170回答 3
3回答

慕哥6287543

我已经遇到与 Mpdf 类似的问题。PHPSpreadsheet 支持多个库生成 PDF。我不喜欢使用 Mpdf,但使用 Tcpdf。我也不确定,但您需要手动安装它们。作曲家需要 tecnickcom/tcpdf然后在你的代码中:$writer = new Tcpdf($spreadsheet);并且不要忘记使用声明;)希望这有帮助!

函数式编程

由于您在创建实例时使用了完全限定的命名空间,因此不会考虑使用语句(因此会出现错误消息)。看起来您在创建实例时在命名空间的开头添加了补充斜杠Mpdf,删除它会解决您的问题。$writer = new PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);但是既然你已经添加了一条use语句,你就不需要再次使用完全限定的命名空间,你可以这样做$writer = new Mpdf($spreadsheet);

慕沐林林

在课前使用语句后,你应该只使用:public function convertPdf($spreadsheet, $filename){    $writer = new Mpdf($spreadsheet);    $writer->save($filename.'.pdf');}
打开App,查看更多内容
随时随地看视频慕课网APP