我正在使用PHPWord从模板创建.docx文件。虽然它可以正常工作,但现在我想将生成的文件转换为PDF格式。首先我尝试使用tcpdf与PHPWord结合使用。
$wordPdf = \PhpOffice\PhpWord\IOFactory::load($filename.".docx");
\PhpOffice\PhpWord\Settings::setPdfRendererPath(dirname(__FILE__)."/../../Office/tcpdf");
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
if (file_exists($filename.".pdf")) unlink($filename.".pdf");
$pdfWriter->save($filename.".pdf");
但是当我尝试加载文件并将其转换为PDF
时,加载文件时出现以下异常
Fatal error: Uncaught exception 'BadMethodCallException' with message 'Cannot add PreserveText in Section.'
经过一些研究,我发现其他人也有这个错误(phpWord - Cannot add PreserveText in Section)
编辑
在尝试了更多后,我发现只有当文档中有一些
邮件合并字段
时才会出现异常
。一旦我将它们删除,异常
就不再出现,但转换后的
我考虑使用其他方法来生成PDF,但我只找到了4种方法:
- 使用OpenOffice - 不可能,因为我无法在服务器上安装任何软件。此外,按照这里提到的方法也行不通,因为我的主机商(Strato)使用SunOS作为操作系统,而这需要Linux。
- 使用phpdocx - 我没有任何预算来支付它,而且演示版无法创建PDF。
- 使用PHPLiveDocx - 这个可以用,但每天只能转换250个文档,每小时只能转换20个文档,并且我必须一次性转换大约300个文档,甚至可能每天多次转换。
- 使用PHP-Digital-Format-Convert - 输出效果比
PHPWord
和tcpdf
好,但仍然不能使用,因为缺少图像和大部分(不是全部!)样式。
是否有第五种生成PDF的方法?或者有没有解决方案使生成的PDF文档看起来更美观?
soffice
二进制文件,而这在strato上不应该被安装... - CodeBrauer