1, Jacob 是 Java-COM Bridge 的缩写, 它在 Java 与微软的 COM 组件之间构建一座桥梁. 使用 Jacob 自带的 DLL 动态链接库, 并通过 JNI 的方式实现了在 Java 平台上对 COM 程序的调用. DLL 动态链接库的生成需要 windows 平台的支持.
2, Apache POI 包括一系列的 API, 它们可以操作基于 MicroSoft OLE 2 Compound Document Format 的各种格式文件, 可以通过这些 API 在 Java 中读写 Excel,Word 等文件. 他的 excel 处理很强大, 对于 word 还局限于读取, 目前只能实现一些简单文件的操作, 不能设置样式.
3, Java2word 是一个在 java 程序中调用 MS Office Word 文档的组件 (类库). 该组件提供了一组简单的接口, 以便 java 程序调用他的服务操作 Word 文档.
这些服务包括: 打开文档, 新建文档, 查找文字, 替换文字, 插入文字, 插入图片, 插入表格, 在书签处插入文字, 插入图片, 插入表格等. 填充数据到表格中读取表格数据 ,1.1 版增强的功能: 指定文本样式, 指定表格样式. 如此, 则可动态排版 word 文档.
4, iText 操作 Excel 还行. 对于复杂的大量的 word 也是噩梦. 用法很简单, 但是功能很少, 不能设置打印方向等问题.
5, JSP 输出样式基本不达标, 而且要打印出来就更是惨不忍睹.
6, 用 XML 做就很简单了. Word 从 2003 开始支持 XML 格式, 大致的思路是先用 office2003 或者 2007 编辑好 word 的样式, 然后另存为 xml, 将 xml 翻译为 FreeMarker 模板, 最后用 java 来解析 FreeMarker 模板并输出 Doc. 经测试这样方式生成的 word 文档完全符合 office 标准, 样式, 内容控制非常便利, 打印也不会变形, 生成的文档和 office 中编辑文档完全一样.
java 生成 pdf 方案总结
1. Jasper Report 生成 pdf: 设计思路是先生成模板, 然后得到数据, 最后将两者整合得到结果. 但是 Jasper Report 的问题在于, 其生成模板的方式过于复杂, 即使有 IDE 的帮助, 我们还是需要对其中的众多规则有所了解才行, 否则就会给调试带来极大的麻烦.
2. openoffice 生成 pdf:openoffice 是开源软件且能在 windows 和 linux 平台下运行.
3. itext + flying saucer 生成 pdf:itext 和 flying saucer 都是免费开源的, 且与平台无关, 结合 CSS 和 velocity 技术, 可以很好的实现.
一般使用第三种方案比较多, 它实现的步骤是非常简单的.
JAVA 生成 word 优缺点对比
所用技术 | 优点 | 缺点 |
Jacob | 功能强大 | 代码量大,设置样式繁琐;需要 windows 平台支持,无法跨平台 |
Apache POI | 读写 excel 功能强大、操作简单 | 一般只用它读取 word,能够创建简单的 word,不能设置样式,功能太少 |
Java2word | 功能强大,操作简单 | 能满足一般要求,不支持 07 格式,国人开发的,参考资料较多,需要 windows 平台支持 |
iText | 功能全,能满足一般要求 | 不能直接生成或操作 doc 文档,只能生成 rtf 格式的文档,rtf 也可以用 word 打开 |
JSP | 操作简单,代码量少 | 能把当前页面导出简单的 word,不能设置样式,美观性差,无法操作 word |
XML(最佳) | 代码量少,样式、内容容易控制,打印不变形,完全符合 office 标准 | 需要提前设计好 word 模板,把需要替换的地方用特殊标记标出来 |
JAVA 生成 pdf 优缺点对比
所用技术 | 优点 | 缺点 |
openoffice | 本身就是 office 软件,很容易设计一些文档模板,支持 java 调用实现 word 转换成 pdf | 需要先安装,设计好 pdf 模板样式,然后用程序来填充那些预留好的变量 |
itext | 能满足要求,本身提供了一些 api | 无法识别很多 html 的 tag 和 attribute,无法识别 css,需要用其 api 函数来设置样式 |
Jasper Report | 能满足要求,市面上使用的比较多,相关文档多 | 复杂,很难完全掌握,需要先设计模板,强依赖于 IDE 进行可视化编辑 |
flying sauser (最佳) | 能解析 html 和 css 输出成 image、pdf 等格式,操作简单,api 强大 | 需要编写 freemarker 或 velocity 模板,打造 html,勾画 pdf 的样式 |
来源: http://www.bubuko.com/infodetail-2682128.html