亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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/輸出結果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);
        //準備數(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實現(xiàn)word文檔生成和段落循環(huán)

2.把word轉換為pdf

word生成pdf的方法比較多,調研了常用的方式

一種方式是部署一臺windowserver,對外提供接口來進行生成,能最大程度還原格式。

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

現(xiàn)在介紹的是基于jodconverter把word轉換為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 # 每個 Office 進程處理的最大任務數(shù)
    port-numbers: 8202        # LibreOffice 后臺服務使用的端口號,可修改

在處理類中注入,之所以使用@Lazy是因為加載的使用會報錯,讓它延遲加載。

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

3.后續(xù)使用

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

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

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

相關文章

  • Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類

    Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類

    這篇文章主要介紹了Java實現(xiàn)的properties文件動態(tài)修改并自動保存工具類,可實現(xiàn)針對properties配置文件的相關修改與保存功能,需要的朋友可以參考下
    2017-11-11
  • 簡單了解JAVA內(nèi)存區(qū)域效果知識

    簡單了解JAVA內(nèi)存區(qū)域效果知識

    這篇文章主要介紹了簡單了解JAVA內(nèi)存區(qū)域效果知識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 解決表單post,get到springMVC后臺亂碼的問題

    解決表單post,get到springMVC后臺亂碼的問題

    下面小編就為大家分享一篇解決表單post,get到springMVC后臺亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 淺談Java8 的foreach跳出循環(huán)break/return

    淺談Java8 的foreach跳出循環(huán)break/return

    這篇文章主要介紹了Java8 的foreach跳出循環(huán)break/return,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringMVC攔截器超詳細解讀

    SpringMVC攔截器超詳細解讀

    SpringMVC的處理器攔截器,類似于Servlet開發(fā)中的過濾器Filter,用于對處理器進行預處理和后處理。?依賴于web框架,在實現(xiàn)上基于Java的反射機制,屬于面向切面編程(AOP)的一種運用
    2022-07-07
  • Java排序算法之堆排思想及代碼實現(xiàn)

    Java排序算法之堆排思想及代碼實現(xiàn)

    今天小編就為大家分享一篇關于Java排序算法之堆排思想及代碼實現(xiàn),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • IntelliJ IDEA Project窗口的一些設置詳解

    IntelliJ IDEA Project窗口的一些設置詳解

    這篇文章主要介紹了IntelliJ IDEA Project窗口的一些設置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • SpringBoot之HandlerInterceptor攔截器的使用詳解

    SpringBoot之HandlerInterceptor攔截器的使用詳解

    這篇文章主要介紹了SpringBoot之HandlerInterceptor攔截器的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 詳解Java中方法重寫和方法重載的6個區(qū)別

    詳解Java中方法重寫和方法重載的6個區(qū)別

    方法重寫和方法重載都是面向對象編程中,那么方法重寫和方法重載有哪些區(qū)別,本文就詳細的來介紹一下,感興趣的可以了解一下
    2022-01-01
  • springboot的maven多模塊混淆jar包的實現(xiàn)方法

    springboot的maven多模塊混淆jar包的實現(xiàn)方法

    springboot可以使用proguard-maven-plugin 這個插件 在 pom.xml 中自定義proguard 的指令,本文基于 springboot + maven + proguard 的maven多模塊架構進行代碼混淆,需要的朋友可以參考下
    2024-03-03

最新評論