2010-06-11 112 views
35

如何使用java api将doc转换为pdf。其中文档包含各种格式,例如ms字中的表格。当使用iText转换为PDF格式时。实际文档看起来不同于转换后的pdf。请提供任何api,而不是安装用于转换的exe。必须是一个开放源码的如何将MS doc转换为pdf

回答

38

这是一个相当艰巨的任务,如果有的话更难你需要完美的结果(不使用Word就不可能),因为在纯Java中完成所有这些工作的API数量是开放源代码,我相信(更新:我错了,请参阅下面的)。

你的基本选项如下:

  1. 使用JNI/C#的Web服务的/ etc脚本的MS Office(仅适用于100%完美的结果选项)
  2. 使用可用的API脚本开放式办公(90 +%完美)
  3. 使用Apache POI & iText(非常大的工作,永远不会完美)。

更新 - 2016年2月11日 这里是我的博客文章就这个问题其中概述了支持Word到PDF在Java中现有产品降低副本。据我所知,可以使Office文档

Converting Microsoft Office (Word, Excel) documents to PDFs in Java

三种产品:

yeokm1/docs-to-pdf-converter 不定期维护,纯Java,开源 联系在一起了一些库来执行转换。

xdocreport 积极发展,纯Java,开源 它的Java API与Jav​​a模型合并与MS Office(DOCX)或OpenOffice(ODT),LibreOffice的(ODT)创建的XML文件来生成报告和转换它如果你需要另一种格式(PDF,XHTML ...)。

Snowbound Imaging SDK 闭源,纯Java 大雪似乎是一个100%的Java解决方案和成本超过$ 2500元。它包含描述如何在评估下载中转换文档的示例。

OpenOffice API 开源,不是纯Java的 - 需要的Open Office安装 OpenOffice是一个天然的Office套件支持的Java API。这支持阅读Office文档和编写PDF文档。 SDK包含文档转换中的示例(examples/java/DocumentHandling/DocumentConverter.java)。要编写PDF,您需要传递“writer_pdf_Export”作者而不是“MS Word 97”。 或者您可以使用包装API JODConverter

JDocToPdf - 死者为2016年2月11日 使用Apache POI读取Word文档和iText的写的PDF。完全免费,100%的Java,但有一些limitations

+0

mlk,有什么机会可以详细说明选项#1?我更愿意为我的情况调用MS制造的API,即使它涉及到使用JNI,以获得最佳外观的PDF渲染。 – kwikness 2014-02-06 15:16:27

+1

我仔细研究了一下(http://www.suodenjoki.dk/us/productions/articles/word2pdf.htm)。我不建议这样做,微软也同意这一点。Word不是为自动化设计的。 – 2014-02-07 20:41:07

+1

http://support.microsoft.com/kb/257757/en-us 如果我必须这样做,我会使用Open Office。 – 2014-02-07 20:42:58

0

我还没有使用它的MS Word中尝试过,但我有很好的成功读取使用Apache POI MS Excel文档 - http://poi.apache.org/

0

查看脚本OpenOffice.org为您完成这项工作。

0

我同意海报列表OpenOffice是一个高保真度word/pdf文档的导入/导出工具,它具有Java API,它也可以跨平台使用。 OpenOffice导入/导出过滤器非常强大,在转换为各种格式(包括PDF)期间保留了大部分格式。 DocmosisJODReports的价值增加使生活比直接学习OpenOffice API更容易,由于UNO api的风格和崩溃相关的错误,这可能具有挑战性。

7

您可以使用JODConverter来达到此目的。它可以用来在不同的办公室格式之间转换文档。如:

  1. 微软Office的OpenDocument,反之亦然
  2. 任何格式的PDF
  3. 并支持更多的转换以及
  4. 它也可以转换的MS Office 2007和文档为PDF格式,以及与几乎所有格式

更多关于它的详细信息可以在这里找到: http://www.artofsolving.com/opensource/jodconverter

0

unoconv,这是一个在UNIX中工作的python工具。 虽然我使用Java在UNIX中调用shell,但它对我来说非常合适。我的源代码:UnoconvTool.java。据说JODConverter和unoconv都使用open office/libre office。

docx4j/docxreport,POI,PDFBox都不错,但他们在转换中缺少一些格式。

3

退房docs-to-pdf-converter on github。它是专为将文档转换为pdf而设计的轻量级解决方案。

为什么?

我想要一个简单的程序,可以将Microsoft Office文档 转换为PDF,但不具有像LibreOffice或昂贵的专有解决方案的依赖关系。看到如何将各种格式的代码和库转换为网页,我决定将所有这些解决方案合并到一个程序中。一路上,I 决定添加ODT支持,因为我也遇到了代码。