文档章节

java生成word的几种方案

xiaoxin
 xiaoxin
发布于 2015/03/05 13:55
字数 1163
阅读 894
收藏 2

1、 JacobJava-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持

 

2、 Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些APIJava中读写ExcelWord等文件。他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式。

 

3、 Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。
这些服务包括: 打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。填充数据到表格中读取表格数据 1.1版增强的功能: 指定文本样式,指定表格样式。如此,则可动态排版word文档。

 

4、 iText操作Excel还行。对于复杂的大量的word也是噩梦。用法很简单但是功能很少不能设置打印方向等问题。

 

5、 JSP输出样式基本不达标,而且要打印出来就更是惨不忍睹。

 

6、 XML做就很简单了。Word2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。

java生成pdf方案总结

1Jasper Report生成pdf:设计思路是先生成模板,然后得到数据,最后将两者整合得到结果。但是Jasper Report的问题在于,其生成模板的方式过于复杂,即使有IDE的帮助,我们还是需要对其中的众多规则有所了解才行,否则就会给调试带来极大的麻烦。

2openoffice生成pdfopenoffice是开源软件且能在windowslinux平台下运行。

3itext + flying saucer生成pdfitextflying saucer都是免费开源的,且与平台无关,结合cssvelocity技术,可以很好的实现。

 

一般使用第三种方案比较多,它实现的步骤是非常简单的。

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

无法识别很多htmltagattribute,无法识别css,需要用其api函数来设置样式

Jasper Report

能满足要求,市面上使用的比较多,相关文档多

复杂,很难完全掌握,需要先设计模板,强依赖于IDE进行可视化编辑

flying sauser(最佳)

能解析htmlcss输出成imagepdf等格式,操作简单,api强大

需要编写freemarkervelocity模板,打造html,勾画pdf的样式

 

本文转载自:http://blog.sina.com.cn/s/blog_a5e968370101crtl.html

共有 人打赏支持
xiaoxin
粉丝 18
博文 262
码字总数 20225
作品 0
海淀
私信 提问
使用 Apache POI 和 OpenOffice API 在 Linux 中统计 Office 文档的页数

简介: 在实际的项目开发中经常会遇到需要在不同的操作系统平台上统计 Microsoft Office 系列文档页数的要求。Apache POI 提供了一套完整的用于访问微软格式文档的 Java API。但是 Apache P...

IBMdW
2012/10/26
1K
0
有没有将word转换为flash的好方法

最近的项目中用到了word文档的在线预览功能,类似于百度文库那种。word文档是通过程序自动生成的, 现在的思路是想把word通过java 程序转换成flah 文件,这个貌似类似于flshpaper 这样的工具...

浪漫的菜鸟
2012/12/12
1K
6
JAVA实现调用打印机打印PDF

JAVA实现调用打印机打印PDF,网上搜索了一大把资料,基本上都是重复。。。下面骂人的一大堆。。我这里来解决一下。 需求:前端调用用接口 后端根据模版生成数据联通打印机直接一键打印! 思路...

jason_kiss
2018/12/27
0
0
java远程调用openoffice服务将word文件转换成pdf问题

启动openoffice服务的命令 关键java程序 看构造函数是支持java程序远程调用openoffice服务的,但是实际测试出现异常 word文件和java程序都在应用服务器192.168.1.130上,openoffice服务在192...

小龙在线
2016/06/17
1K
3
word常用接口对象--DataRegion类

DataRegion 类,代表一个数据区域,用来填充数据区域及控制数据区域格式。您只能通过调用 OpenDataRegion(String) 方法或 CreateDataRegion(String, DataRegionInsertType, String) 方法获得...

山里的红杏
2018/09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IDE 插件新版本发布,开发效率 “biu” 起来了

近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明。 本地应用一键部署到任何...

阿里云云栖社区
17分钟前
5
0
金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术...

问题终结者
45分钟前
3
0
Kubernetes Client-go Informer 源码分析

几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数,这样通过Watch 或者Get List 可以获取对应的Object,下面我们从源码分析角度来看一下Client go Informe...

阿里云官方博客
今天
4
0
传统IDC部署网站(三)

11. 重置密码 密钥和密码都支持远程登陆, 二选一 两个都可以登陆, 密钥相对于密码来说,相对安全一点 本地登陆无法是用密钥 修改密码 root 用户 passwd root 修改普通用户 passwd usernam...

miko0089
今天
6
0
bash特性

1.支持别名 alias 2.命令替换 $(COMMANS) 或者 `COMMAND` 3. bash支持的引号: `` :命令替换 "":弱引用,可以实现变量替换 '':强引用,不实现变量替换 4.文件名通配 globbing:(man 7 glo...

忙碌的小蜜蜂
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部