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中编辑文档完全一样。

7、补充一种方案,可以用类似ueditor的在线编辑器编辑word文档,在将html文件转换为xhtml文件,再转换为word。

8、利用PageOffice插件网页编辑word,还有weboffic插件等

参考网址

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的样式

java word插件开发_java生成word的几种方案相关推荐

  1. java生成word排版_java生成word(文字和图片)

    1.整体思路 利用xml模板,在模板中预留占位标识(${yourContent}),然后将xml转为ftl文件,通过Map传值填充对应的内容即可,word其实和html一样,也有自己的xml标签,表头 ...

  2. java实现 定时_Java实现定时任务的几种方案重构

    聊聊定时任务 定时任务,顾名思义就是,定时去完成某项任务,例如指定某个时间点去做某件事情或者是指定一定的时间间隔去做某些事情.使用定时任务就是一种对生产力的解放,如果没有定时任务的话,对于以上的需求, ...

  3. java word 模板_java通过word模板生成word文档

    public static void main(String[] args) { //模板.文件.图片路径 String workPath=System.getProperty("user. ...

  4. java生成word 带表格_【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  5. java生成word 可变表格_【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  6. java 用ftl模板生成word时插入多张图片

    前提: 1.知道如何创建ftl模板 2.知道ftl的指令及语法 3.知道如何用java将ftl文件生成word并添加数据 4.知道如何将图片转为base64字符串 内容: 1.在ftl模板中引入多个图 ...

  7. Java使用FreeMarker自动生成Word文档(带图片和表单)

    Java使用FreeMarker自动生成Word文档(带图片和表单) 1 背景 2 目标效果 3 创建Word模板 3.1 创建模板文档 3.2 转换模板文档 3.3 处理模板文档中的占位符 3.4 ...

  8. JAVA - 使用Apache POI生成word(二) 设置纸张大小、调整纸张方向

    JAVA - 使用Apache POI生成word(二) 设置纸张大小.调整纸张方向 前言 之前开发时,需要将纸张方向由纵向改为横向,查询资料得出只需要设置一下纸张的长度与宽度便可实现相同的效果. 1 ...

  9. JAVA - 使用Apache POI生成word(三)设置页边距

    JAVA - 使用Apache POI生成word(三)设置页边距 1. pom引入依赖 <dependency><groupId>org.apache.poi</gro ...

最新文章

  1. studio2008 无法显示该网页
  2. SQL 中字母大小写转换
  3. vs2010启动调试、停止调试非常慢
  4. php5.5 mysql网站空间_PHP环境配置IIS5.0+PHP5.23+MYSQL5+phpMyAdmin
  5. Docker启动失败 提示An error occurred和乱码
  6. 每天一道LeetCode-----将间隔集中有重叠的间隔合并
  7. SAP Spartacus cx-page-layout 属性运行时的赋值原理, set 是如何被框架调用的?
  8. 工作339:pc父组件通过props传值给子组件,如何避免子组件改变props的属性值报错问题
  9. Sublime 插件安装、卸载、更新
  10. python--线性回归
  11. 正则表达式 —— 非捕获元
  12. Markdown 表格
  13. winrar 4.20 注册码
  14. 局域网监控软件是企业数据安全的最强护盾
  15. 关于跑步,总感觉得写点什么!
  16. golang操作chromedp模拟浏览器基础入门
  17. CHM 打开时提示 已取消到该网页的导航
  18. 第4周收录188起融资,国内物流暴涨,国外40起过亿元大额融资 | 潜在周报
  19. 微视linux scsi驱动超时错误处理
  20. R语言 cowplot包快速拼图

热门文章

  1. Java中的空指针异常
  2. 优化计算机组策略,在win7系统中优化组策略的多种小技巧
  3. 40网桥的基本概念及其原理
  4. html字体颜色 html中设置字体颜色代码 字体颜色获取
  5. 作为产品经理的你,画原型图时崩溃过吗?
  6. android命令大全 pdf,android调试桥(adb)常用命令.pdf
  7. php 设置数字键盘,window_win10启动时如何设置默认打开小键盘数字输入切换键?,win10作为微软的一次重大变革 - phpStudy...
  8. Python---文件操作
  9. unity NullReferenceException: Object reference UnityEditor.Graphs.Edge.WakeUp () (at D:/unity/
  10. 谷哥闹别扭,谷姐来上场