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

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

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

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

一、總體方案對比

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

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

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

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

原理

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

安裝 LibreOffice

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

Spring Boot 示例代碼

Maven 依賴(無需額外)

<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)點

  • 免費
  • 支持 .doc / .docx
  • 格式還原度高

注意

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

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

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)點

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

缺點

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

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

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");

五、常見問題 & 解決方案

中文亂碼

Linux 安裝中文字體

yum install wqy-microhei-fonts

并發(fā)問題

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

Web 接口示例

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

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

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

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

相關(guān)文章

  • Spring組件初始化擴展點BeanPostProcessor的作用詳解

    Spring組件初始化擴展點BeanPostProcessor的作用詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

    Java單例模式中的線程安全問題

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

    Java中的@Accessors使用詳解

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

    idea不使用maven如何將項目打包

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

最新評論

轮台县| 河津市| 肃北| 西安市| 五常市| 华池县| 灵武市| 兴安县| 增城市| 栖霞市| 内丘县| 荆门市| 乐清市| 贡山| 怀宁县| 古交市| 武隆县| 阿克苏市| 靖远县| 咸阳市| 河池市| 江陵县| 临湘市| 通许县| 榆林市| 和林格尔县| 遵义县| 哈巴河县| 双桥区| 随州市| 莆田市| 麻江县| 濮阳市| 嘉善县| 桦甸市| 台南市| 兴山县| 文安县| 颍上县| 万载县| 台江县|