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

SpringBoot實(shí)現(xiàn)Word轉(zhuǎn)PDF?的完整思路與示例代碼詳解

 更新時(shí)間:2026年05月07日 15:51:47   作者:每日技術(shù)  
本文介紹了在SpringBoot中實(shí)現(xiàn)將Word轉(zhuǎn)換為PDF的多種方案,包括docx4j、LibreOffice、ApachePOI+iText等主流方案,針對(duì)不同需求提供了詳細(xì)的方案對(duì)比,代碼示例以及注意事項(xiàng),希望對(duì)大家有所幫助

下面給你一個(gè)在 Spring Boot 中實(shí)現(xiàn) Word 轉(zhuǎn) PDF? 的完整思路與示例,覆蓋主流可行方案、推薦做法以及注意事項(xiàng),你可以按項(xiàng)目需求選擇。

一、總體方案對(duì)比

方案是否收費(fèi)轉(zhuǎn)換質(zhì)量依賴環(huán)境推薦指數(shù)
docx4j + Plutext PDF Converter?商業(yè)需授權(quán)?????無(wú)(Java)???
LibreOffice(命令行)免費(fèi)????需安裝LibreOffice???
Apache POI + iText(間接)免費(fèi)??復(fù)雜?
Aspose.Words for Java商業(yè)?????無(wú)?(有錢)

生產(chǎn)環(huán)境最推薦

  • Windows/Linux 服務(wù)器:LibreOffice
  • 企業(yè)級(jí)高質(zhì)量:docx4j + Plutext(或 Aspose)

二、方案一:LibreOffice(最常用、免費(fèi))

原理

Spring Boot 調(diào)用服務(wù)器上的 soffice命令將 .docx.pdf

安裝 LibreOffice

# Ubuntu
sudo apt install libreoffice
# CentOS
yum install libreoffice
# Windows
下載安裝 LibreOffice

Spring Boot 示例代碼

Maven 依賴(無(wú)需額外)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

Service 示例

import java.io.*;

@Service
public class WordToPdfService {

    public void convert(String wordPath, String pdfPath) throws Exception {
        String command = "libreoffice --headless --convert-to pdf "
                + wordPath + " --outdir " + new File(pdfPath).getParent();

        Process process = Runtime.getRuntime().exec(command);
        int exitCode = process.waitFor();

        if (exitCode != 0) {
            throw new RuntimeException("Word轉(zhuǎn)PDF失敗");
        }
    }
}

優(yōu)點(diǎn)

  • 免費(fèi)
  • 支持 .doc / .docx
  • 格式還原度高

注意

  • Linux 必須安裝字體(否則中文亂碼)
  • 不支持并發(fā)過(guò)高(建議隊(duì)列或限制線程)

三、方案二:docx4j + Plutext(企業(yè)級(jí))

Maven 依賴

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>11.4.9</version>
</dependency>
<dependency>
    <groupId>org.plutext</groupId>
    <artifactId>plutext-pdf-converter</artifactId>
    <version>3.3.0</version>
</dependency>

轉(zhuǎn)換代碼

import org.docx4j.Docx4J;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

import java.io.FileOutputStream;

public void convert() throws Exception {
    WordprocessingMLPackage wordMLPackage =
            WordprocessingMLPackage.load(new File("input.docx"));

    Docx4J.toPDF(wordMLPackage, new FileOutputStream("output.pdf"));
}

優(yōu)點(diǎn)

  • 純 Java
  • 不依賴外部軟件
  • 樣式還原好

缺點(diǎn)

  • Plutext 商用需授權(quán)
  • 對(duì)復(fù)雜表格/頁(yè)眉頁(yè)腳偶有偏差

四、方案三:Aspose.Words(最強(qiáng)但貴)

Maven

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.12</version>
</dependency>

代碼示例

import com.aspose.words.Document;

Document doc = new Document("input.docx");
doc.save("output.pdf");

五、常見(jiàn)問(wèn)題 & 解決方案

中文亂碼

Linux 安裝中文字體

yum install wqy-microhei-fonts

并發(fā)問(wèn)題

  • LibreOffice 不建議多線程同時(shí)轉(zhuǎn)換
  • 可使用線程池 + 隊(duì)列

Web 接口示例

@PostMapping("/convert")
public ResponseEntity<?> convert(MultipartFile file) throws Exception {
    // 保存word
    // 調(diào)用轉(zhuǎn)換
    // 返回pdf流
}

六、推薦選型總結(jié)

場(chǎng)景推薦方案
普通后臺(tái)系統(tǒng)LibreOffice
企業(yè)文檔系統(tǒng)docx4j + Plutext
金融/合同/報(bào)表Aspose.Words

到此這篇關(guān)于SpringBoot實(shí)現(xiàn)Word轉(zhuǎn)PDF?的完整思路與示例代碼詳解的文章就介紹到這了,更多相關(guān)SpringBoot Word轉(zhuǎn)PDF?內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring組件初始化擴(kuò)展點(diǎn)BeanPostProcessor的作用詳解

    Spring組件初始化擴(kuò)展點(diǎn)BeanPostProcessor的作用詳解

    本文通過(guò)實(shí)戰(zhàn)案例和常見(jiàn)應(yīng)用場(chǎng)景詳細(xì)介紹了BeanPostProcessor的使用,并強(qiáng)調(diào)了其在Spring擴(kuò)展中的重要性,感興趣的朋友一起看看吧
    2025-03-03
  • Java異常監(jiān)控(監(jiān)控利器)

    Java異常監(jiān)控(監(jiān)控利器)

    這篇文章給大家介紹Java異常監(jiān)控(監(jiān)控利器)的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-03-03
  • SpringBoot任意版本集成Swagger各種版本的操作指南

    SpringBoot任意版本集成Swagger各種版本的操作指南

    在學(xué)習(xí)Swagger生成API文檔的時(shí)候經(jīng)常會(huì)遇到問(wèn)題,而目前市面上大部分技術(shù)分享者的SpringBoot版本并沒(méi)和我們的同步,導(dǎo)致一些一模一樣的代碼,在我們的項(xiàng)目上卻無(wú)法使用,這是一個(gè)經(jīng)常性的問(wèn)題,本文章就旨在和大家搞定SpringBoot任意版本集成Swagger各種版本
    2024-07-07
  • 9個(gè)java數(shù)組常用操作實(shí)例

    9個(gè)java數(shù)組常用操作實(shí)例

    在本篇文章里小編給各位整理了關(guān)于java數(shù)組常用操作的實(shí)例以及相關(guān)的代碼,需要的朋友們跟著學(xué)習(xí)下。
    2019-07-07
  • Java 重命名 Excel 工作表并設(shè)置工作表標(biāo)簽顏色的示例代碼

    Java 重命名 Excel 工作表并設(shè)置工作表標(biāo)簽顏色的示例代碼

    這篇文章主要介紹了Java 重命名 Excel 工作表并設(shè)置工作表標(biāo)簽顏色的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 使用JAVA8 filter對(duì)List多條件篩選的實(shí)現(xiàn)

    使用JAVA8 filter對(duì)List多條件篩選的實(shí)現(xiàn)

    這篇文章主要介紹了使用JAVA8 filter對(duì)List多條件篩選的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • JAVA實(shí)現(xiàn)sm3加密簽名以及防止重復(fù)攻擊

    JAVA實(shí)現(xiàn)sm3加密簽名以及防止重復(fù)攻擊

    這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)sm3加密簽名以及防止重復(fù)攻擊的相關(guān)資料,SM3是簽名算法,和MD5一樣(對(duì)于應(yīng)用層來(lái)說(shuō)),SM4是對(duì)稱加密算法,和AES一樣(對(duì)于應(yīng)用層來(lái)說(shuō)),需要的朋友可以參考下
    2023-10-10
  • Java單例模式中的線程安全問(wèn)題

    Java單例模式中的線程安全問(wèn)題

    本文主要介紹了Java單例模式中的線程安全問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Java中的@Accessors使用詳解

    Java中的@Accessors使用詳解

    這篇文章主要介紹了Java中的@Accessors使用詳解,@RequiredArgsConstructor是Lombok的一個(gè)注解,簡(jiǎn)化了我們對(duì)setter和getter方法操作,它可以作用在類上,也可以作用在類的單個(gè)屬性上,需要的朋友可以參考下
    2024-01-01
  • idea不使用maven如何將項(xiàng)目打包

    idea不使用maven如何將項(xiàng)目打包

    使用IDEA 2021版本,不借助Maven進(jìn)行打WAR包的步驟是:首先點(diǎn)擊Project Structure,然后點(diǎn)擊Artifacts,接著選擇需要的打包類型,設(shè)置好包的名稱,最后進(jìn)行打包,這種方法適用于不使用Maven進(jìn)行項(xiàng)目管理的情況
    2024-09-09

最新評(píng)論

鲁甸县| 天水市| 江陵县| 余庆县| 兴山县| 察哈| 清原| 政和县| 文成县| 克拉玛依市| 溆浦县| 景泰县| 衡东县| 永寿县| 榆树市| 留坝县| 鹤岗市| 仲巴县| 青河县| 吴桥县| 麻江县| 伊金霍洛旗| 宜宾县| 岳池县| 怀化市| 柳州市| 保山市| 六枝特区| 陈巴尔虎旗| 济阳县| 贞丰县| 沁阳市| 新建县| 南川市| 始兴县| 惠州市| 宜黄县| 天镇县| 广汉市| 富锦市| 青神县|