如何在Linux服务器上从.docx文件生成PDF文件?

4
我们在生产服务器上使用的是Ubuntu 10服务器版。我们需要创建一个包含文本、图片和表格内容以及页眉和页脚中的图片的文档。现在我们使用http://phpword.codeplex.com/来创建它,并且它能够很好地生成docx文件,但我们需要该文件的pdf版本。如何将docx转换为pdf?或者有没有其他库可以生成允许在页眉/页脚中插入图片的pdf文件?使用Windows组件不是解决方案。使用OpenOffice可以吗?它可以在Ubuntu服务器版上使用吗?还有其他在Linux-服务器环境下将docx转换为pdf的转换器吗?

为什么不直接使用 TCPDF 生成 PDF,而要从 docx -> pdf 进行转换呢? - ismail
我将尝试使用TCPDF库。如果它支持我们所有的要求,那么它是一个很好的解决方案。 - Revelation
2个回答

6
如果你的文档包含图片,使用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服务器版(没有GUI,只有控制台),OpenOffice能否在控制台中运行? - Revelation
1
可以,但是需要在无头模式下运行,并使用一些其他选项,如“-nofirststartwizard”。我有一个小脚本来启动/停止它作为服务。我将编辑我的之前的回答并在那里发布,因为在此评论中我没有足够的空间。 - Restless

1
你可以尝试使用docx4j(Java)进行操作。它可以生成PDF文件,而头部中的图像也不应该是问题。
更新于2016年5月:
在过去的一年左右时间里,我们提供了一个高质量的商业docx转PDF转换器,可在Linux上运行(对于Solaris也是如此)。您可以在http://converter-eval.plutext.com/上尝试并下载安装程序。

如果TCPDF失败了,我会尝试使用docx4j。 - Revelation
1
docx4j和xdocreport在复杂模板上失败 - Mark Bakker
请在http://www.docx4java.org/forums/data-binding-java-f16/上报告任何docx4j故障的问题,@Mark。 - JasonPlutext
你可以使用Carbone轻松创建docx文件的PDF。 - Guillaume P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接