目的:将数据转换成word图片的方式展现给用户
工具:openoffice +java代码 +数据库,其中openoffice有windows版本的和Linux版本的。
其中openoffice的下载地址为:链接:https://pan.baidu.com/s/1Y5Ra3TfNCcvVX1bF-29hjw 密码:44ms
openoffice的安装及启动不在描述:网上自行百度。
下面主要是目的实现的步骤。
第一步:创建openoffice的连接池,使用linkedlist实现。简单的连接池,避免过多的消耗资源!
<!--word转pdf以及pdf转图片使用的jar-->
<dependency>
<groupId>wisemax</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>ridl</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>jurt</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>juh</artifactId>
<version>3.0.1</version>
</dependency>
<!--<dependency>-->
<!--<groupId>org.slf4j</groupId>-->
<!--<artifactId>slf4j-jdk14</artifactId>-->
<!--<version>1.5.6</version>-->
<!--</dependency>-->
<dependency>
<groupId>org.icepdf</groupId>
<artifactId>icepdf-core</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.openoffice</groupId>
<artifactId>unoil</artifactId>
<version>3.2.1</version>
</dependency>
第二步:将数据转换成对应的模板信息。我利用的是github上的开源项目Word模板引擎 https://github.com/Sayi/poi-tl
具体的步骤和生成文档的方法,里面有很详细的介绍。
第三步:生成数据到word文档
①:准备一个如上图所示的模板或者自己定义一个模板,将需要动态生成的数据用{ {xx}}进行占位。
如上代码便是将数据生成word的方法。输出路径为
其中map中put的key 是模板中的占位符变量。value是对应的值。
第四步:将word转换成pdf,此时要用到了openoffice工具。检查工具是否开启。
第五步:将pdf转成图片,图片的格式可以是png 或者jpg,图片的名字自定义。并且将下载的url返回
提醒建议:
一:openoffice的安装,网上百度都有,很简单的,仔细阅读github上的开源项目。
二:生成word的模板是自己定义的,文字的位置加粗斜体下划线等由POI-tl提供,类似于freemaker。但是我觉得比freemaker好用些。
三:生成的word是一页,但是pdf可能是两页,最后转换图片是根据pdf的页数进行转换的,反正最后都是会转换的。
四:最后生成的图片url可以根据自身的需求进行修改。
五:jar包可能缺乏,博主的jar是刚好的,如果有冲突或者缺少,大家可以搜一下资料进行修改。