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

Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF的兩種方法

 更新時(shí)間:2025年04月28日 09:20:26   作者:五行星辰  
本文主要介紹了Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF的兩種方法,分別使用Apache POI和Docx4J結(jié)合iText庫(kù)來(lái)實(shí)現(xiàn)Word轉(zhuǎn)PDF,具有一定的參考價(jià)值,感興趣的可以了解一下

嘿,朋友們!在開發(fā)中,經(jīng)常會(huì)碰到需要把 Word 文檔轉(zhuǎn)換成 PDF 格式的需求,像生成報(bào)告、合同啥的。Java 有不少好用的庫(kù)能實(shí)現(xiàn)這個(gè)功能,下面就給大家介紹兩種常見(jiàn)的方法,分別使用 Apache POI 和 Docx4J 結(jié)合 iText 庫(kù)來(lái)實(shí)現(xiàn) Word 轉(zhuǎn) PDF。

方法一:使用 Apache POI 和 iText

1. 引入依賴

如果你用 Maven 管理項(xiàng)目,在 pom.xml 里添加以下依賴:

<dependencies>
    <!-- Apache POI 處理 Word 文檔 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
    <!-- iText 生成 PDF 文檔 -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.13.3</version>
    </dependency>
</dependencies>

2. 代碼示例

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.*;

public class WordToPdfWithPOI {
    public static void main(String[] args) {
        try {
            // 讀取 Word 文檔
            FileInputStream fis = new FileInputStream("input.docx");
            XWPFDocument document = new XWPFDocument(fis);

            // 創(chuàng)建 PDF 文檔
            Document pdfDoc = new Document();
            PdfWriter.getInstance(pdfDoc, new FileOutputStream("output.pdf"));
            pdfDoc.open();

            // 遍歷 Word 文檔的段落
            for (XWPFParagraph paragraph : document.getParagraphs()) {
                StringBuilder text = new StringBuilder();
                // 遍歷段落中的文本運(yùn)行對(duì)象
                for (XWPFRun run : paragraph.getRuns()) {
                    text.append(run.getText(0));
                }
                // 將段落文本添加到 PDF 文檔中
                Paragraph pdfParagraph = new Paragraph(text.toString());
                pdfDoc.add(pdfParagraph);
            }

            // 關(guān)閉文檔和流
            pdfDoc.close();
            document.close();
            fis.close();

            System.out.println("Word 轉(zhuǎn) PDF 成功!");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Word 轉(zhuǎn) PDF 失?。? + e.getMessage());
        }
    }
}

3. 代碼解釋

  • 讀取 Word 文檔:用 FileInputStream 讀取 input.docx 文件,再用 XWPFDocument 類把它加載到內(nèi)存。

  • 創(chuàng)建 PDF 文檔:創(chuàng)建 Document 對(duì)象表示 PDF 文檔,用 PdfWriter 關(guān)聯(lián)輸出流,然后打開文檔準(zhǔn)備寫入內(nèi)容。

  • 遍歷 Word 文檔段落:遍歷 Word 文檔的每個(gè)段落,把段落里的文本提取出來(lái),添加到 StringBuilder 里,再創(chuàng)建 Paragraph 對(duì)象添加到 PDF 文檔中。

  • 關(guān)閉文檔和流:操作完成后,關(guān)閉 PDF 文檔、Word 文檔和輸入流。

方法二:使用 Docx4J

1. 引入依賴

在 pom.xml 里添加以下依賴:

<dependencies>
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-JAXB-Internal</artifactId>
        <version>11.4.9</version>
    </dependency>
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
        <version>11.4.9</version>
    </dependency>
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j</artifactId>
        <version>11.4.9</version>
    </dependency>
    <dependency>
        <groupId>org.docx4j</groupId>
        <artifactId>docx4j-export-fo</artifactId>
        <version>11.4.9</version>
    </dependency>
</dependencies>

2. 代碼示例

import org.docx4j.Docx4J;
import org.docx4j.convert.out.FOSettings;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class WordToPdfWithDocx4J {
    public static void main(String[] args) {
        try {
            // 加載 Word 文檔
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File("input.docx"));

            // 創(chuàng)建 FOSettings 對(duì)象
            FOSettings foSettings = Docx4J.createFOSettings();
            foSettings.setWmlPackage(wordMLPackage);

            // 創(chuàng)建輸出流
            OutputStream os = new FileOutputStream(new File("output.pdf"));

            // 轉(zhuǎn)換并保存為 PDF
            Docx4J.toPDF(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);

            // 關(guān)閉輸出流
            os.close();

            System.out.println("Word 轉(zhuǎn) PDF 成功!");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Word 轉(zhuǎn) PDF 失?。? + e.getMessage());
        }
    }
}

3. 代碼解釋

  • 加載 Word 文檔:用 WordprocessingMLPackage.load 方法加載 input.docx 文件。

  • 創(chuàng)建 FOSettings 對(duì)象FOSettings 用于配置轉(zhuǎn)換設(shè)置,把加載的 Word 文檔設(shè)置進(jìn)去。

  • 創(chuàng)建輸出流:創(chuàng)建 FileOutputStream 用于輸出 PDF 文件。

  • 轉(zhuǎn)換并保存為 PDF:調(diào)用 Docx4J.toPDF 方法進(jìn)行轉(zhuǎn)換,并將結(jié)果保存到輸出流。

  • 關(guān)閉輸出流:操作完成后,關(guān)閉輸出流。

嘿,朋友們!這兩種方法都能幫你用 Java 把 Word 文檔轉(zhuǎn)換成 PDF。你可以根據(jù)自己的需求和喜好選擇合適的方法。趕緊動(dòng)手試試,讓你的程序輕松搞定文檔轉(zhuǎn)換!

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

相關(guān)文章

  • 使用Spring注入Hibernate驗(yàn)證框架

    使用Spring注入Hibernate驗(yàn)證框架

    這篇文章主要介紹了使用Spring注入Hibernate驗(yàn)證框架方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java使用common-httpclient包實(shí)現(xiàn)post請(qǐng)求方法示例

    java使用common-httpclient包實(shí)現(xiàn)post請(qǐng)求方法示例

    這篇文章主要給大家介紹了關(guān)于java使用common-httpclient包實(shí)現(xiàn)post請(qǐng)求的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Spring使用@Async出現(xiàn)循環(huán)依賴原因及解決方案分析

    Spring使用@Async出現(xiàn)循環(huán)依賴原因及解決方案分析

    在Spring框架中,啟用異步功能需要在應(yīng)用主類上添加@EnableAsync注解,當(dāng)項(xiàng)目中存在循環(huán)引用時(shí),如一個(gè)異步類MessageService和一個(gè)常規(guī)類TaskService相互引用,并且這兩個(gè)類位于同一包內(nèi),這種情況下可能會(huì)觸發(fā)Spring的循環(huán)依賴異常
    2024-10-10
  • 一個(gè)依賴搞定?Spring?Boot?接口防盜刷的流程分析

    一個(gè)依賴搞定?Spring?Boot?接口防盜刷的流程分析

    kk-anti-reptile 是適用于基于 spring-boot 開發(fā)的分布式系統(tǒng)的反爬蟲組件,這篇文章主要介紹了一個(gè)依賴搞定?Spring?Boot?接口防盜刷,需要的朋友可以參考下
    2022-06-06
  • java實(shí)現(xiàn)表格數(shù)據(jù)的存儲(chǔ)

    java實(shí)現(xiàn)表格數(shù)據(jù)的存儲(chǔ)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)表格數(shù)據(jù)的存儲(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Mybatis-Plus?3.5.12?分頁(yè)攔截器消失的問(wèn)題及快速解決方法

    Mybatis-Plus?3.5.12?分頁(yè)攔截器消失的問(wèn)題及快速解決方法

    作為Java開發(fā)者,我們都愛(ài)用Mybatis-Plus簡(jiǎn)化CRUD操作,尤其是它的分頁(yè)功能,幾行代碼就能搞定復(fù)雜的分頁(yè)查詢,本文給大家介紹Mybatis-Plus3.5.12分頁(yè)攔截器消失的問(wèn)題快速解決方法,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • Java注解的Retention和RetentionPolicy實(shí)例分析

    Java注解的Retention和RetentionPolicy實(shí)例分析

    這篇文章主要介紹了Java注解的Retention和RetentionPolicy,結(jié)合實(shí)例形式分析了Java注解Retention和RetentionPolicy的基本功能及使用方法,需要的朋友可以參考下
    2019-09-09
  • SpringCloud+RocketMQ實(shí)現(xiàn)分布式事務(wù)的實(shí)踐

    SpringCloud+RocketMQ實(shí)現(xiàn)分布式事務(wù)的實(shí)踐

    分布式事務(wù)已經(jīng)成為了我們的經(jīng)常使用的。所以我們來(lái)一步一步的實(shí)現(xiàn)基于RocketMQ的分布式事務(wù)。感興趣的可以了解一下
    2021-10-10
  • 淺談MyBatis 如何執(zhí)行一條 SQL語(yǔ)句

    淺談MyBatis 如何執(zhí)行一條 SQL語(yǔ)句

    Mybatis 是 Java 開發(fā)中比較常用的 ORM 框架。在日常工作中,我們都是直接通過(guò) Spring Boot 自動(dòng)配置,并直接使用,但是卻不知道 Mybatis 是如何執(zhí)行一條 SQL 語(yǔ)句的,下面就一起講解一下
    2021-05-05
  • SpringBoot中注冊(cè)Bean的方式總結(jié)

    SpringBoot中注冊(cè)Bean的方式總結(jié)

    這篇文章主要介紹了SpringBoot中注冊(cè)Bean的方式總結(jié),@ComponentScan + @Componet相關(guān)注解,@Bean,@Import和spring.factories這四種方式,文中代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04

最新評(píng)論

双牌县| 灵台县| 诸城市| 五家渠市| 阜南县| 泰安市| 阜阳市| 新密市| 南部县| 古蔺县| 全州县| 天全县| 新丰县| 嘉善县| 高邑县| 云南省| 若尔盖县| 修水县| 承德市| 沐川县| 漳浦县| 开原市| 沧州市| 衡东县| 阳原县| 灵川县| 布尔津县| 禄丰县| 昌乐县| 亚东县| 夏邑县| 洛川县| 泗阳县| 长沙县| 志丹县| 铜鼓县| 什邡市| 台北市| 通许县| 宜宾市| 阿拉尔市|