在无头服务器上处理 Doc/Docx 模板以生成 PDF,最好不使用 OpenOffice.org

在无头服务器上处理 Doc/Docx 模板以生成 PDF,最好不使用 OpenOffice.org

在生产 Web 服务器上,我必须根据我获得的 MS-Word 二进制格式的模板生成信件。我使用 PHP,对于搜索和替换任务,我发现 PHPWord 可以处理 Docx 文件,因此我在本地工作站上将模板转换为 OpenXML。不幸的是,输出也是 Docx。

目标是生成一个供用户下载的 PDF,以便她可以非常轻松地一次打印出一堆信件。

现在我需要找到一种方法来:

  • 在 PDF 文件中搜索和替换文本
  • 将 Docx 转换为 PDF,不丢失格式
  • 编辑原始 Doc 模板,不丢失格式,也不使用 COM
  • 将 Docx 转换为 Doc 而不丢失格式(这似乎几乎不可能,因为模板在 Word 中看起来不错,但从技术上讲,格式化的过程是一大堆...)所以我可以使用 wvPDF 进行转换

除了 OpenOffice.org 之外,我不想使用 Web 服务。我知道 PHPLiveDocx,但出于性能、可用​​性、安全性原因,我不想依赖外部服务。此外,在这种情况下,购买软件不是一个选择(无法影响这一点)。

在面向公众的 Web 服务器上运行,我不想拉动 OpenOffice.org - 甚至不想无头,因为它将拉动大约 160MB 的压缩(!)二进制文件,最佳实践不是不加载你不需要的二进制文件真的需要在面向公众的服务器上。虽然使用 oo.o 是最后的手段,但我想确保我已经排除了可能存在的任何其他选项。

主机操作系统是CentOS 5.5。

我从这里可以去哪里?

问候,luxifer

答案1

据我所知,没有任何应用程序可以在不依赖 Libre Office 的情况下做到这一点。

但是,仅执行命令行转换时不需要安装整个办公套件。

您可以尝试使用以下工具反卷积 安装 unoconv满足您的需求。它有 python 和 python-uno 作为依赖项。后者还将安装libreoffice-核心作为依赖项但不是整个办公套件。

答案2

艾比词将在命令行中识别的任何格式之间进行转换,其中包括您提到的所有格式。例如,要将 odt 转换为 pdf:

abiword --to=pdf filename.odt

将 .docx 转换为 .doc:

abiword --to=doc filename.docx

(如果您想搜索它,只需转换为基于纯文本的内容,如 HTML 或 RTF 或甚至 TXT,然后在其中搜索;如果需要,再转换回来。)

但是,不安装 OpenOffice 以便可以使用其库(例如 unoconv)的明显原因究竟是什么?

答案3

您可以尝试此链接中提供的 AbiWord 服务器端示例 http://www.advogato.org/person/msevior/diary.html?start=65

答案4

尝试使用 PyODConverter (看这里

相关内容