java将数据库数据转换成word文档并且生成pdf文件

目的:将数据转换成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是刚好的,如果有冲突或者缺少,大家可以搜一下资料进行修改。

参考

    原文作者:俺叫啥好嘞
    原文地址: https://blog.csdn.net/qq_42946963/article/details/118941710
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞