【问题标题】:How to Generate PDF file from .docx from linux server?如何从 .docx 从 linux 服务器生成 PDF 文件?
【发布时间】:2023-10-28 12:42:01
【问题描述】:

我们在生产服务器上使用:Ubuntu 10 服务器版。 我们需要创建一个文档,在内容中包含文本、图像和表格,在页眉和页脚中包含图像。 现在我们使用http://phpword.codeplex.com/ 创建它,它可以很好地生成 docx 文件,但我们需要该文件的 pdf 版本。 我们如何将 docx 转换为 pdf ?或任何其他库来生成允许页眉/页脚中的图像的 pdf 文件? 使用 Windows 组件不是解决方案。 也许使用 openOffice?可以在 ubuntu 服务器版本上使用吗? linux - 服务器环境中 docx 到 pdf 的任何其他转换器?

【问题讨论】:

  • 为什么不用docx -> pdf直接生成PDF而不是TCPDF
  • 我会试试 TCPDF 库。如果它支持我们的所有要求,它是一个很好的解决方案

标签: linux pdf pdf-generation docx


【解决方案1】:

如果您的文档包含图像,使用 OpenOffice 绝对是一个不错的解决方案。如果您想尝试一下,请查看PyODConverter

如果是简单的文本,您可能需要考虑使用更简单的解决方案,例如 PHPDocx、unoconv、AbiWord 或 LiveDocx。

我过去曾为此使用过 OOo(并且仍然用于将 Odt 文件转换为 Pdf),并且效果很好。 :) 我只遇到了一个问题,但已经解决了。你可以在这里查看:Docx to pdf using openoffice headless way too slow

编辑:

我创建了一个 bash 脚本“/etc/init.d/openoffice”来使用正确的选项启动 openoffice。文件内容如下:

#!/bin/bash
# openoffice.org headless server script
#
# chkconfig: 2345 80 30
# description: headless openoffice server script
# processname: openoffice

OOo_HOME=/usr/lib/openoffice
SOFFICE_PATH=$OOo_HOME/program/soffice

if [ "$1" == "start" ]; then
 echo "Starting OpenOffice headless server"
 $SOFFICE_PATH --headless --accept="pipe,name=beubi_OOffice;urp;StarOffice.ServiceManager" --invisible --norestore --nodefault --nolockcheck --nofirstwizard
 exit
fi

if [ "$1" == "stop" ]; then
 echo "Stopping OpenOffice headless server."
 killall -9 soffice.bin && killall -9 soffice
 exit
fi

echo "Usage: $0 {start|stop}"
exit 1

然后设置执行权限就可以了。

【讨论】:

  • 问题是我们使用的是ubuntu SERVER版(没有GUI,只有控制台),OpenOffice可以在控制台中运行吗?
  • 当然。但它需要在无头模式下运行,并带有一些其他选项,如“-nofirststartwizard”。我有一个小脚本来启动/停止它作为服务。我将编辑我以前的答案并将其发布在那里,因为在此评论中我没有足够的空间。
【解决方案2】:

您可以尝试 docx4j (Java)。它可以生成pdf,并且标题中的图像应该没有问题。

2016 年 5 月更新

在过去一年左右的时间里,我们一直在提供一个高质量的商业 docx 到 PDF 转换器,它运行在 Linux(和 Solaris 上);在http://converter-eval.plutext.com/ 尝试一下,您还可以在其中下载安装程序。

【讨论】: