您认为哪个更好地用于将 docx 文档作为 java 对象读取,为什么?
换句话说。哪个库支持大多数单词标签?
披露:我领导 docx4j 项目
虽然 docx4j 也可以处理 pptx 和 xlsx,但它主要用于 docx 操作。举例说明,截至撰写本文时,docx4j 论坛中有近 1000 个主题。pptx论坛只有10%的量。
无论您想对 docx 文档做什么,docx4j 都应该能够为您提供帮助。有一个通用工作流程的单页概述。
对于许多常见的需求,docx4j 提供了更高级别的 API。这些包括:
创建/打开/保存 docx(当然)
使用多种方法生成报告/文档:(i) 变量替换,(ii) XML 数据绑定(特别强大),以及 (iii) 邮件合并
导出为 HTML、XHTML
导出为 PDF(支持字体)
对于其他任何事情,您都可以将 docx 的 JAXB 表示操作到您心中的内容。JAXB 是 Java 社区标准,包含在 Java 6 中,并且在 EclipseLink 的 MOXy 中具有强大的替代实现。(POI 使用 XML Beans 而不是 JAXB)
有一个Web 应用程序可帮助您探索 docx,并生成 Java 代码以创建相应的 Java 对象。
当然,如果您有一些特定的任务,可能是 docx4j 或 POI 在这方面具有特殊的优势。
docx4j 和 POI 都获得了 ASL v2 许可。
docx4j 得到积极维护;它的源代码在 GitHub 上。
此外,如果您需要,可以为 docx4j 提供商业支持,还有几个商业扩展,例如MergeDocx。
docx4j 确实依赖 POI 作为库来实现OLE 2 复合文档格式,我们对此表示感谢。
我认为 Apache POI 的主要重点是处理电子表格,尽管我具有读取 word 文档的功能并且它使用 xml beans 来做到这一点。Docx4j 主要使用 jaxb 处理 docx 文档。通常 jaxb 允许将 xml 转换为 java 对象,因此我认为 docx4j 更适合您的情况。
如果你在处理 docx 文档,docx4j 比 Apache POI 更方便。您可以使用以下链接来学习 docx4j 的基础知识。此外,还有一个不错的 docx4j 论坛。
1. http://blog.iprofs.nl/2012/09/06/creating-word-documents-with-docx4j/ 2. http://www.smartjava.org/content/create-complex-word-docx-文档-程序化-docx4j ?
我尝试了 Apache POI,但问题是从 docx 文件中打印任何内容时(例如:要从 docx 打印所有“Heading1”元素),它会打印出很多错误数据和空格。Docx4j 会避免这个坏数据,我试过了。