有没有Java API可以创建丰富的Word文档?

113

我有一个新的应用程序需要生成一个包含表格、图形、目录和文本的 Word 文档。有哪些好的 API 可以使用?您对其支持图形、目录和表格感到多么确定?在使用它们时有哪些隐藏的注意事项?

一些澄清:

  • 我无法输出 PDF,他们想要 Word 文档。
  • 他们正在使用 MS Word 2003(或 2007),而不是 OpenOffice。
  • 应用程序正在运行在 *nix 应用服务器上。

如果我可以从一个模板文档开始,并只填写一些空白表格、图形等内容,那就太好了。

编辑:下面有几个好的答案,每个答案在我的当前情况下都有其缺点。很难从中选择一个“最终答案”。我会让它保持开放状态,并希望能够创建出更好的解决方案。

编辑:OpenOffice UNO 项目似乎是最接近我所要求的。虽然 POI 显然更主流,但对于我想要的东西来说还太不成熟。


27
不确定在最后编辑时间为30个月之后以及在最初提问时间的3年之后关闭这个问题是否有多大的生产力。如果我将标题更改为“如何使用Java API创建丰富的Word文档?”能否解决这个问题? - billjamesdev
1
如果有人需要对可用的Java API进行全面审查,请访问http://www.esupu.com/open-source-office-document-java-api-review/。 - Supun Sameera
你可以看一下 docxtemplater,https://github.com/edi9999/docxtemplater/ 这个库,它是我创建的一个用于从 docx 模板生成 docx 的库。 - edi9999
1
问题应该重新开放。问题已经被重新表述以符合规则,因此我想呼吁有权重新开放此问题的人。在修改前,问题是:有什么好的Java API可以创建Word文档?现在问题是:是否有Java API可以创建富文本Word文档?现在问题清楚地指出了提问者想要的内容:创建带有图表、目录和表格的Word文档。问题也不再要求“好”的Java API。好对每个人来说都不同。 - Sjoerd Pottuit
16个回答

1

iText 非常易于使用。

如果您需要 doc 文件,可以从命令行调用 abiword(免费的轻量级跨平台文本处理器),它有多种转换格式选项。


1
经过进一步的研究,我发现了iText,一个用于创建PDF和RTF文件的API。我认为我可以使用RTF生成功能来创建一个可由Doc编辑并重新保存的可读文件。
有人在这种方式下使用过iText吗?
Bill,从编程角度来看,POI和iText API非常相似。我以前都用过这两个,发现它们都很容易使用,并且文档说明也很完善。
使用iText,您可以轻松地在不同格式(RTF和PDF)之间切换,只需对代码进行少量更改即可。如果我没记错的话,内容是使用相同的调用布局,然后通过几行代码设置为PDF或RTF。
然而,我认为RTF的格式限制与DOC相比较有限。我不知道您是否能够实现您寻找的高级功能(表格、内联图像),可能需要付出相当大的麻烦,甚至可能无法实现。
根据您所说的HWPF对您的需求功能不足(我只处理过POI的Excel部分),您最好说服相关人员,PDF是最适合这项工作的技术选择。

1

docx4j或poi,两者都是ASL v2

@wondersofcomputing:iText实际上是免费和开源的


0
尽管这个回复比请求的时间晚了很多,但对其他人可能有所帮助。Docmosis提供了一个Java API,用于使用文档模板创建doc、pdf、odt格式的文档。它使用OpenOffice作为引擎来执行格式转换。文档操作和填充是由Docmosis本身执行的。

0

既然这是一个Web应用程序,另一种可能性是我可以渲染一个MIME类型设置为“application/msword”的HTML页面,这会导致浏览器生成Word并成功导入HTML,允许编辑和保存,就像输出真正的Word文档一样。

表格可以正常工作,但是图片还没有解决。这可能只需要在HTML中添加一个img标签,或者我需要以二进制形式流式传输响应的另一部分,或者使用其他方法,我还没有想到。 :)


-1
经过更多的研究,我发现了iText,这是一个PDF和RTF文件创建API。我认为我可以使用RTF生成来创建一个可由Doc读取的文件,然后使用Doc进行编辑并重新保存。
有人在这种情况下使用iText有任何经验吗?

我使用iText导出RTF文件时遇到了一些问题:例如目录并不是很好用,而且它的使用也不是非常容易(文档缺失)。 - AlfaTeK

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