我正在使用 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 语句。任何想法 ?
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
我已经遇到与 Mpdf 类似的问题。
PHPSpreadsheet 支持多个库生成 PDF。
我不喜欢使用 Mpdf,但使用 Tcpdf。我也不确定,但您需要手动安装它们。
作曲家需要 tecnickcom/tcpdf
然后在你的代码中:
$writer = new Tcpdf($spreadsheet);
并且不要忘记使用声明;)
希望这有帮助!
函数式编程
TA贡献1807条经验 获得超9个赞
由于您在创建实例时使用了完全限定的命名空间,因此不会考虑使用语句(因此会出现错误消息)。
看起来您在创建实例时在命名空间的开头添加了补充斜杠Mpdf
,删除它会解决您的问题。
$writer = new PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);
但是既然你已经添加了一条use
语句,你就不需要再次使用完全限定的命名空间,你可以这样做
$writer = new Mpdf($spreadsheet);
慕沐林林
TA贡献2016条经验 获得超9个赞
在课前使用语句后,你应该只使用:
public function convertPdf($spreadsheet, $filename)
{
$writer = new Mpdf($spreadsheet);
$writer->save($filename.'.pdf');
}
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消