I wanted a simple program that can convert Microsoft Office documents
to PDF but without dependencies like LibreOffice or expensive
proprietary solutions. Seeing as how code and libraries to convert
each individual format is scattered around the web, I decided to
combine all those solutions into one single program. Along the way, I
decided to add ODT support as well since I encountered the code too.
# 1 楼答案
现在已经是2019年了,我真不敢相信还没有最简单、最方便的方法将Java世界中最流行的Micro$oft Word文档转换为Adobe PDF格式
我几乎尝试了以上提到的每一种方法,我发现满足我需求的最好的也是唯一的方法就是使用OpenOffice或LibreOffice。实际上,我并不完全知道它们之间的区别,似乎它们都提供了
soffice
命令行我的要求是:
首先想到的是
doc-to-pdf-converter
,但它缺乏维护,上次更新发生在4年前,我不会使用无人维护的解决方案Xdocreport
似乎是一个很有希望的选择,但它只能转换docx
,而不能转换我必须的doc
二进制文件。使用Java调用OpenOffice API似乎不错,但对于这样一个简单的需求来说太复杂了最后我找到了最好的解决方案:使用OpenOffice命令行来完成这项工作:
我一直相信最短的代码就是最好的代码(当然它应该是可以理解的),就是这样
# 2 楼答案
签出docs-to-pdf-converter on github。它是一个轻量级的解决方案,专为将文档转换为pdf而设计
# 3 楼答案
Docx4j是开源的,是将Docx转换为pdf的最佳API,没有任何对齐或字体问题
Maven依赖项:
代码:
# 4 楼答案
您可以使用Cloudmersive本机Java库。它每月最多可免费转换50000次,并且根据我的经验,它的保真度比其他基于iText或ApachePOI的方法高得多。这些文档实际上看起来与Microsoft Word中的文档一样,而Microsoft Word对我来说是关键。顺便说一句,它还可以将XLSX、PPTX和遗留文档、XLS和PPT转换为PDF
代码如下所示,首先添加导入:
然后转换文件:
您可以从门户网站免费获得document conversion API key
# 5 楼答案
这是一项相当艰巨的任务,如果您想要获得完美的结果(不使用Word是不可能的),那么这项任务就更加艰巨了。因此,在纯Java中为您完成这一切的API数量为零,并且是开源的,我相信(更新:我错了,请参见下文)
您的基本选择如下:
更新-2016-02-11 这里是我关于这个主题的博客文章的一个缩略副本,它概述了在Java中支持Word到PDF的现有产品
Converting Microsoft Office (Word, Excel) documents to PDFs in Java
据我所知,有三种产品可以呈现Office文档:
yeokm1/docs-to-pdf-converter 不定期维护,纯Java,开源 将多个库绑定在一起以执行转换
xdocreport 积极开发、纯Java、开源 Java API可以将使用MS Office(docx)或OpenOffice(odt)、LibreOffice(odt)创建的XML文档与Java模型合并,生成报告,并在需要时将其转换为其他格式(PDF、XHTML…)
Snowbound Imaging SDK 封闭源代码,纯Java Snowbound似乎是一个100%的Java解决方案,成本超过2500美元。它包含描述如何在评估下载中转换文档的示例
OpenOfficeAPI 开源,而非纯Java-需要安装OpenOffice OpenOffice是一个支持JavaAPI的本机Office套件。这支持阅读Office文档和编写PDF文档。SDK包含一个文档转换示例(examples/java/DocumentHandling/DocumentConverter.java)。要编写pdf,您需要通过“writer\u pdf\u导出”编写器,而不是“MS Word 97”编写器。 或者您可以使用包装器API JODConverter
截至2016年2月11日死亡 使用ApachePOI读取Word文档,使用iText编写PDF。完全免费,100%Java,但有一些limitations
# 6 楼答案
为此,可以使用JODConverter。它可用于在不同office格式之间转换文档。例如:
更多详细信息可在此处找到: http://www.artofsolving.com/opensource/jodconverter