小编Pin*_*895的帖子

从PHPWord生成的.docx生成PDF

我正在.docx使用模板创建文件PHPWord.它工作正常,但现在我想将生成的文件转换为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");  
Run Code Online (Sandbox Code Playgroud)

但是当我尝试加载文件以将其转换为PDF我在加载文件时遇到以下异常

致命错误:未捕获的异常'BadMethodCallException',消息'无法在Section中添加PreserveText.'

经过一些研究后我发现其他一些人也有这个bug(phpWord - 无法在Section中添加PreserveText)

编辑

在尝试了一些后,我发现,Exception只有当我mail merge fields在我的文档中有一些时才会发生.一旦我删除它们Exception就不再出现了,但转换后的PDF文件看起来很糟糕.所有样式信息都消失了,我无法使用结果,因此需要替代方案.



我想过用另一种方法生成PDF,但我只能找到4种方法:

  1. 使用OpenOffice - 不可能,因为我无法在服务器上安装任何软件.这里提到的方式也不起作用,因为我的主机(Strato)使用SunOS作为操作系统,这需要Linux
  2. 使用phpdocx - 我没有任何预算可以支付,演示无法创建PDF
  3. 使用PHPLiveDocx - 这是有效的,但是每天有250个文件和每小时20个文件的限制我必须一次转换300个文件,甚至可能每天多次转换
  4. 使用PHP-Digital-Format-Convert - 输出看起来比使用PHPWord和更好tcpdf,但仍然不能用作图像丢失,以及大多数(不是全部!)的样式

有没有第五种方法来生成PDF?或者是否有任何解决方案可以使生成的PDF文档看起来不错?

php pdf docx phpword

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

docx ×1

pdf ×1

php ×1

phpword ×1