最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java根據(jù)模板實(shí)現(xiàn)填充word內(nèi)容并轉(zhuǎn)換為pdf

 更新時(shí)間:2025年04月08日 10:10:01   作者:ByteX  
這篇文章主要為大家詳細(xì)介紹了java如何根據(jù)模板實(shí)現(xiàn)填充word內(nèi)容并轉(zhuǎn)換為pdf,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1.word模板填充內(nèi)容

使用EasyPoi寫入Word文檔。

import cn.afterturn.easypoi.word.WordExportUtil;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class WriteWordtemplate {


    public static void main(String[] args) throws Exception {
        Map<String, Object> params = createDate();
        String sourceFile = "d:/temp/模版word3.docx";
        String targetFile = "d:/temp/輸出結(jié)果3.docx";
        FileOutputStream fos = null;
        try {
            //獲取模板文檔
            File templateFile = new File(sourceFile);
            System.out.println(templateFile.getName());
            // 寫入word
            XWPFDocument doc = WordExportUtil.exportWord07(templateFile.getPath(), params);
            fos = FileUtils.openOutputStream(new File(targetFile));
            doc.write(fos);
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            IOUtils.closeQuietly(fos);
        }
    }

    private static Map<String, Object> createDate() {

        //填充數(shù)據(jù)
        List<WordExportBatch> resultList = new ArrayList<>();
        WordExportBatch wordExport = new WordExportBatch();
        WordExportBatch wordExport1 = new WordExportBatch();
        wordExport.setCreateDate("2022/9/30");
        wordExport1.setCreateDate("2022/9/28");
        wordExport.setNumber("11");
        wordExport.setExMoneny("11");
        wordExport.setExFunc("支付寶");
        wordExport1.setNumber("15");
        wordExport.setAmount("1234.5");
        wordExport1.setAmount("2345.77");
        wordExport.setEndDate("2022/12/31");
        wordExport1.setEndDate("2022/11/30");
        wordExport.setType("支付寶");
        wordExport1.setType("微信");
        wordExport1.setExMoneny("22");
        wordExport1.setExFunc("微信");
        resultList.add(wordExport);
        resultList.add(wordExport1);
        //準(zhǔn)備數(shù)據(jù)
        Map<String, Object> params = new HashMap<>();
        params.put("number", "112");
        params.put("amount", "1234.5");
        params.put("endDate", "2022/11/30");
        params.put("resultList", resultList);
        return params;
    }

}

pom依賴可以參考:使用EasyPoi實(shí)現(xiàn)word文檔生成和段落循環(huán)

2.把word轉(zhuǎn)換為pdf

word生成pdf的方法比較多,調(diào)研了常用的方式

一種方式是部署一臺(tái)windowserver,對(duì)外提供接口來進(jìn)行生成,能最大程度還原格式。

第二種方式就是利用jodconverter,會(huì)有少許的失真。

現(xiàn)在介紹的是基于jodconverter把word轉(zhuǎn)換為PDF。首先引入jar包

        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>4.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-spring-boot-starter</artifactId>
            <version>4.2.2</version>
        </dependency>

在配置文件中加入如下配置

jodconverter:
  local:
    enabled: true             # 啟用本地模式
    office-home: /opt/libreoffice7.5    # LibreOffice 的安裝路徑
    max-tasks-per-process: 10 # 每個(gè) Office 進(jìn)程處理的最大任務(wù)數(shù)
    port-numbers: 8202        # LibreOffice 后臺(tái)服務(wù)使用的端口號(hào),可修改

在處理類中注入,之所以使用@Lazy是因?yàn)榧虞d的使用會(huì)報(bào)錯(cuò),讓它延遲加載。

     @Lazy
   @Autowired
   private DocumentConverter converter;
    
 public void wordConvertToPdf(File wordFile, File pdfFile) {
        try {
            logger.info("word轉(zhuǎn)換pdf開始");
            converter.convert(wordFile).to(pdfFile).execute();
            logger.info("word轉(zhuǎn)換pdf結(jié)束");
        } catch (Exception e) {
            logger.error("word轉(zhuǎn)pdf異常", e);
        }
    }

3.后續(xù)使用

之前寫過word模板生成段落和生成表格的段落。

結(jié)合起來就能生成相對(duì)完整的word了。后續(xù)如果需要蓋章什么的直接拿生成的pdf文件就可以了。

到此這篇關(guān)于java根據(jù)模板實(shí)現(xiàn)填充word內(nèi)容并轉(zhuǎn)換為pdf的文章就介紹到這了,更多相關(guān)java模板填充word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • @Async異步線程池以及線程的命名方式

    @Async異步線程池以及線程的命名方式

    這篇文章主要介紹了@Async異步線程池以及線程的命名方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java微信紅包實(shí)現(xiàn)算法

    java微信紅包實(shí)現(xiàn)算法

    這篇文章主要為大家詳細(xì)介紹了java微信紅包實(shí)現(xiàn)算法,列出紅包的核心算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • java 按行讀取文件并輸出到控制臺(tái)的方法

    java 按行讀取文件并輸出到控制臺(tái)的方法

    今天小編就為大家分享一篇java 按行讀取文件并輸出到控制臺(tái)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Struts2的配置 struts.xml Action詳解

    Struts2的配置 struts.xml Action詳解

    這篇文章主要介紹了Struts2的配置 struts.xml Action詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java序列化(Serialization) 機(jī)制

    Java序列化(Serialization) 機(jī)制

    本篇文章是對(duì)Java中對(duì)象的序列化(Serialization) 機(jī)制進(jìn)行了詳細(xì)的分析介紹,并附實(shí)例,需要的朋友可以參考下
    2016-07-07
  • 在SpringBoot中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃調(diào)用實(shí)踐記錄(場(chǎng)景分析)

    在SpringBoot中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃調(diào)用實(shí)踐記錄(場(chǎng)景分析)

    本文介紹了如何在SpringBoot項(xiàng)目中使用UniHttp簡(jiǎn)化天地圖路徑規(guī)劃接口的調(diào)用,通過一個(gè)具體的例子展示了如何根據(jù)中文地址獲取經(jīng)緯度坐標(biāo),并使用UniHttp調(diào)用天地圖路徑規(guī)劃服務(wù),感興趣的朋友一起看看吧
    2025-02-02
  • Java讀取Excel文件內(nèi)容的簡(jiǎn)單實(shí)例

    Java讀取Excel文件內(nèi)容的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Java讀取Excel文件內(nèi)容的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-11-11
  • 手把手教你如何獲取微信用戶openid

    手把手教你如何獲取微信用戶openid

    眾所周知小程序的openid相當(dāng)重要,它是用戶的唯一標(biāo)識(shí)id,牽扯的支付,登錄,授權(quán)等,下面這篇文章主要給大家介紹了關(guān)于如何獲取微信用戶openid的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • spring?boot配置dubbo方式(properties)

    spring?boot配置dubbo方式(properties)

    這篇文章主要介紹了spring?boot配置dubbo方式(properties),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java微信小程序醫(yī)院掛號(hào)系統(tǒng)

    Java微信小程序醫(yī)院掛號(hào)系統(tǒng)

    這篇文章主要介紹了基于Java微信小程序醫(yī)院掛號(hào)系統(tǒng),可以實(shí)現(xiàn)遠(yuǎn)程處理事務(wù),遠(yuǎn)程提交工作和隨時(shí)追蹤工作的狀態(tài),文中提供了解決思路和部分實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

普定县| 琼结县| 柳河县| 钦州市| 彭州市| 新邵县| 景宁| 红安县| 遂宁市| 湘潭市| 会昌县| 龙游县| 孟津县| 繁昌县| 晋江市| 哈尔滨市| 高安市| 阜南县| 桐城市| 武威市| 莱芜市| 永川市| 建阳市| 噶尔县| 慈溪市| 盐亭县| 峨山| 奉贤区| 安丘市| 宁明县| 合阳县| 白城市| 枞阳县| 绵阳市| 治多县| 梓潼县| 满城县| 监利县| 惠东县| 宜良县| 河东区|