首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图从命名空间"Mpdf“加载类"Mpdf”

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

Stack Overflow用户
提问于 2020-05-29 07:43:36
回答 3查看 773关注 0票数 0

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

代码语言:javascript
复制
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”语句吗?

我不理解这个错误,我已经正确地在我的代码中插入了use语句。知道吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-29 09:19:36

我已经和Mpdf有类似的问题了。

PHPSpreadsheet支持多个Librairies生成PDF

我是疯子使用Mpdf但是Tcpdf。我也不确定,但您需要手动安装它们。

composer需要tecnickcom/tcpdf

然后在您的代码中:

代码语言:javascript
复制
$writer = new Tcpdf($spreadsheet);

不要忘记use语句;)

希望能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2020-05-29 07:46:16

在上课前使用语句之后,您应该只使用:

代码语言:javascript
复制
public function convertPdf($spreadsheet, $filename)
{
    $writer = new Mpdf($spreadsheet);
    $writer->save($filename.'.pdf');
}
票数 0
EN

Stack Overflow用户

发布于 2020-05-29 07:53:53

因为在创建实例时使用了完全限定的命名空间,所以没有考虑use语句(因此是错误消息)。

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

代码语言:javascript
复制
$writer = new PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);

但是,由于您已经添加了一个use语句,您不需要再次使用完全限定的命名空间,您可以这样做。

代码语言:javascript
复制
$writer = new Mpdf($spreadsheet);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62081030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档