这是一个老问题,但我想我给出一些指示,因为我已经为此苦苦挣扎了一段时间,最终在github 上编写了我自己的包:wrklst/docxmustache。
以下是我知道的一些解决方案:
免费解决方案:
部分免费和付费:
我与 opentbs 合作了很多,但我对它不满意,我目前正在尝试评估以编写更适合我特定需求的自己的解决方案。通常您需要: - 用于解压缩/重新压缩 docx 文件的 zip 类 - 用于替换值的模板引擎,我正在使用 mustache ( https://github.com/bobthecow/mustache.php ) - 如果您打算替换图像您还需要更高级的文件、参考和 xml 处理。Php 的 SimpleXMLElement 应该足以处理所有的 xml 操作。
当然,您始终可以将 docx 转换为更易于访问的格式,但这会极大地影响任何样式。如果那不是问题,我建议使用 libreoffice 将您的 docx 转换为 libreoffice 支持的任何格式。在基于 linux 的服务器上,您可以通过命令行轻松访问它,这里有一个使用 symfony 执行命令的示例:
$command = "soffice --headless --convert-to html ".$inputfile.' --outdir '.$outputfile.'/');
$process = new \Symfony\Component\Process\Process($command);
$process->start();
while ($process->isRunning()) {}
// executes after the command finishes
if (!$process->isSuccessful()) {
throw new \Symfony\Component\Process\Exception\ProcessFailedException($process);
}
如果您想在上下文中查看此内容,请查看我的包 wrklst/docxmustache 。
祝你好运!