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

Java使用docx4j實現(xiàn)將Word文檔轉(zhuǎn)換為PDF

 更新時間:2026年04月02日 15:14:21   作者:XDOC  
這篇文章主要為大家詳細介紹了Java如何使用docx4j實現(xiàn)將Word文檔轉(zhuǎn)換為PDF,核心是通過 XSL-FO + Apache FOP 進行格式轉(zhuǎn)換,有需要的可以了解下

使用 docx4j 實現(xiàn) DOCX 轉(zhuǎn) PDF,核心是通過 XSL-FO + Apache FOP 進行格式轉(zhuǎn)換。以下是完整、可直接運行的方案(Maven + Java)。

一、核心依賴(Maven)

需引入 docx4j-core 和 PDF 導(dǎo)出模塊 docx4j-export-fo

<dependencies>
    <!-- docx4j 核心庫 -->
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-core</artifactId>
        <version>11.5.4</version>
    </dependency>
    <!-- FO 導(dǎo)出(轉(zhuǎn)PDF必需) -->
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-export-fo</artifactId>
        <version>11.5.4</version>
    </dependency>
    <!-- JAXB 實現(xiàn)(JDK 9+ 必須顯式引入) -->
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
        <version>11.5.4</version>
    </dependency>
</dependencies>

二、最簡轉(zhuǎn)換代碼(含中文支持)

import org.docx4j.Docx4J;
import org.docx4j.fonts.IdentityPlusMapper;
import org.docx4j.fonts.Mapper;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class DocxToPdfConverter {
    public static void convert(String docxPath, String pdfPath) throws Exception {
        // 1. 加載 DOCX 文件
        WordprocessingMLPackage pkg = WordprocessingMLPackage.load(new File(docxPath));
        // 2. 配置字體映射(解決中文亂碼/方框問題)
        Mapper fontMapper = new IdentityPlusMapper();
        // 自動掃描系統(tǒng)字體
        PhysicalFonts.discoverPhysicalFonts();
        // 常用中文字體映射(Windows/Linux通用)
        fontMapper.put("宋體", PhysicalFonts.get("SimSun"));
        fontMapper.put("微軟雅黑", PhysicalFonts.get("Microsoft YaHei"));
        fontMapper.put("黑體", PhysicalFonts.get("SimHei"));
        fontMapper.put("楷體", PhysicalFonts.get("KaiTi"));
        fontMapper.put("隸書", PhysicalFonts.get("LiSu"));
        pkg.setFontMapper(fontMapper);
        // 3. 轉(zhuǎn)換并輸出 PDF
        try (OutputStream os = new FileOutputStream(pdfPath)) {
            // FLAG_EXPORT_PREFER_XSL:兼容性最好
            Docx4J.toPDF(pkg, os);
        }
    }
    // 測試
    public static void main(String[] args) throws Exception {
        convert("input.docx", "output.pdf");
        System.out.println("轉(zhuǎn)換完成");
    }
}

三、測試結(jié)果

原始文檔

轉(zhuǎn)換效果

四、結(jié)論

格式兼容性問題比較多,簡單文檔可以使用,兼容性要求高的情況下,建議放棄

由于不能預(yù)知要轉(zhuǎn)換的文檔中使用了哪些中文字體,可能出現(xiàn)###,這個問題比較嚴重

到此這篇關(guān)于Java使用docx4j實現(xiàn)將Word文檔轉(zhuǎn)換為PDF的文章就介紹到這了,更多相關(guān)Java docx4j實現(xiàn)Word轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud Config解決的問題和案例

    Spring Cloud Config解決的問題和案例

    Spring Cloud Config 是 Spring Cloud 套件中的一個工具,提供了在分布式系統(tǒng)中對外部化配置的服務(wù)器端和客戶端支持,本文介紹了Spring Cloud Config解決的問題和案例,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • java異常處理機制示例(java拋出異常、捕獲、斷言)

    java異常處理機制示例(java拋出異常、捕獲、斷言)

    這篇文章主要介紹了java異常處理機制示例(java拋出異常、捕獲、斷言),需要的朋友可以參考下
    2014-05-05
  • 基于Java語言實現(xiàn)Socket通信的實例

    基于Java語言實現(xiàn)Socket通信的實例

    今天小編就為大家分享一篇關(guān)于基于Java語言實現(xiàn)Socket通信的實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • spring?boot獲取session的值為null問題及解決方法

    spring?boot獲取session的值為null問題及解決方法

    我在登陸的時候,登陸成功后將name存進了session,然后在獲取個人信息時取出session里的name的值為null,接下來通過本文給大家分享springboot獲取session的值為null問題,需要的朋友可以參考下
    2023-05-05
  • Mybatis 一級緩存與二級緩存的實現(xiàn)

    Mybatis 一級緩存與二級緩存的實現(xiàn)

    mybatis作為一個流行的持久化工具,緩存必然是缺少不了的組件。通過這篇文章,就讓我們來了解一下一級緩存與二級緩存的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • java 枚舉類中的valueOf用法說明

    java 枚舉類中的valueOf用法說明

    這篇文章主要介紹了java 枚舉類中的valueOf用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot如何使用@ConfigurationProperties封裝配置文件

    springboot如何使用@ConfigurationProperties封裝配置文件

    springboot如何使用@ConfigurationProperties封裝配置文件的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • maven中profile的使用

    maven中profile的使用

    本文主要介紹了maven中profile的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • SpringBoot3實現(xiàn)國際化的代碼步驟

    SpringBoot3實現(xiàn)國際化的代碼步驟

    國際化,簡稱 i18n,源自國際化英文單詞 internationalization 中首字母 i 與尾字母 n 之間有 18 個字母,本文給大家介紹了SpringBoot3實現(xiàn)國際化的操作步驟,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-12-12
  • 解決Unboxing of'stringRedisTemplate.hasKey(xx)'may produce 'NullPointerException' 警告問題

    解決Unboxing of'stringRedisTemplate.hasKey(xx)'

    文章介紹了在使用`stringRedisTemplate.hasKey(xx)`方法時可能會出現(xiàn)`NullPointerException`警告的原因,并提出了相應(yīng)的解決方法
    2026-03-03

最新評論

玉山县| 碌曲县| 扬州市| 富源县| 大洼县| 湖口县| 安溪县| 奉新县| 阜新市| 侯马市| 佳木斯市| 濮阳县| 宿松县| 承德县| 张掖市| 桑植县| 鄂州市| 饶河县| 乌兰浩特市| 长春市| 南宫市| 墨竹工卡县| 焦作市| 金平| 门源| 咸阳市| 临江市| 拉孜县| 安义县| 中江县| 满城县| 平果县| 河北区| 砀山县| 红原县| 丰原市| 和龙市| 四会市| 伊宁市| 额济纳旗| 郴州市|