尝试从命名空间 "Mpdf" 加载 class "Mpdf"

Attempted to load class "Mpdf" from namespace "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');



    }

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

Attempted to load class "Mpdf" from namespace "Mpdf". Did you forget a "use" statement for "PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf"?

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

在 class 之前的 use 语句之后,您应该只使用:

public function convertPdf($spreadsheet, $filename)
{
    $writer = new Mpdf($spreadsheet);
    $writer->save($filename.'.pdf');
}

由于您在创建实例时使用了完全限定的命名空间,因此未考虑使用语句(因此出现错误消息)。

您似乎在创建 Mpdf 实例时在命名空间的开头添加了补充斜杠,删除它会解决您的问题。

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

但是既然你添加了use语句,你就不需要再使用全限定命名空间了,你可以做

$writer = new Mpdf($spreadsheet);

我已经遇到了与 Mpdf 类似的问题。

PHPSpreadsheet 支持 multiple Librairies to generate PDF

我很讨厌使用 Mpdf,但使用 Tcpdf。 我也不确定,但你需要手动安装它们。

composer require tecnickcom/tcpdf

然后在你的代码中:

$writer = new Tcpdf($spreadsheet);

并且不要忘记 use 语句 ;)

希望对您有所帮助!