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

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

 更新時(shí)間:2025年02月09日 12:44:31   作者:五行星辰  
在開(kāi)發(fā)中,經(jīng)常會(huì)碰到需要把 Word 文檔轉(zhuǎn)換成 PDF 格式的需求,Java 有不少好用的庫(kù)能實(shí)現(xiàn)這個(gè)功能,本文為大家介紹了兩個(gè)常用的方法,需要的可以了解下

在開(kāi)發(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)輸出流,然后打開(kāi)文檔準(zhǔn)備寫(xiě)入內(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ù)自己的需求和喜好選擇合適的方法。

到此這篇關(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)文章

  • Java攔截器、過(guò)濾器和監(jiān)聽(tīng)器的區(qū)別與作用詳解

    Java攔截器、過(guò)濾器和監(jiān)聽(tīng)器的區(qū)別與作用詳解

    Java 攔截器、過(guò)濾器和監(jiān)聽(tīng)器是在 Java Web 開(kāi)發(fā)中常用的組件,它們各有特點(diǎn)和用途,下面將分別介紹它們的區(qū)別和作用,并提供具體的代碼示例,需要的朋友可以參考下
    2025-06-06
  • 詳解Java中字符流與字節(jié)流的區(qū)別

    詳解Java中字符流與字節(jié)流的區(qū)別

    這篇文章主要介紹了詳解Java中字符流與字節(jié)流的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • javascript checkbox全選和反選的簡(jiǎn)單實(shí)現(xiàn)

    javascript checkbox全選和反選的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了javascript checkbox全選和反選的簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Activiti如何啟動(dòng)流程并使流程前進(jìn)

    Activiti如何啟動(dòng)流程并使流程前進(jìn)

    這篇文章主要介紹了Activiti如何啟動(dòng)流程并使流程前進(jìn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java ArrayList底層方法的實(shí)現(xiàn)深度解析

    Java ArrayList底層方法的實(shí)現(xiàn)深度解析

    ArrayList是Java集合框架中List接口的動(dòng)態(tài)數(shù)組實(shí)現(xiàn),可以方便的存儲(chǔ)和操作數(shù)據(jù),這篇文章是進(jìn)行ArrayList的一個(gè)自我實(shí)現(xiàn),讓我們從底層更深度地理解ArrayList(順序表),感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • 詳解java中的static關(guān)鍵字

    詳解java中的static關(guān)鍵字

    這篇文章主要介紹了java中的static關(guān)鍵字的的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過(guò)程

    springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過(guò)程

    這篇文章主要介紹了springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringSecurity中的跨域問(wèn)題處理方案

    SpringSecurity中的跨域問(wèn)題處理方案

    本文介紹了跨域資源共享(CORS)技術(shù)在JavaEE開(kāi)發(fā)中的應(yīng)用,詳細(xì)講解了CORS的工作原理,包括簡(jiǎn)單請(qǐng)求和非簡(jiǎn)單請(qǐng)求的處理方式,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友參考下吧
    2025-11-11
  • Java過(guò)濾器模式原理及用法實(shí)例

    Java過(guò)濾器模式原理及用法實(shí)例

    這篇文章主要介紹了Java過(guò)濾器模式原理及用法實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • ThreadLocal?在上下文傳值場(chǎng)景實(shí)踐源碼

    ThreadLocal?在上下文傳值場(chǎng)景實(shí)踐源碼

    這篇文章主要為大家介紹了ThreadLocal在上下文傳值場(chǎng)景下的實(shí)踐源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論

沛县| 普格县| 文成县| 阿鲁科尔沁旗| 左权县| 定州市| 都安| 聂拉木县| 黄骅市| 富平县| 白沙| 延津县| 武城县| 丹凤县| 胶州市| 和平区| 基隆市| 获嘉县| 北辰区| 晋江市| 青铜峡市| 海原县| 鲜城| 滁州市| 廉江市| 芦溪县| 南投县| 搜索| 横峰县| 年辖:市辖区| 东乡| 阳江市| 石首市| 陈巴尔虎旗| 大厂| 邹城市| 汕头市| 高碑店市| 宿迁市| 阜宁县| 大宁县|