Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF的兩種方法
嘿,朋友們!在開發(fā)中,經(jīng)常會碰到需要把 Word 文檔轉(zhuǎn)換成 PDF 格式的需求,像生成報(bào)告、合同啥的。Java 有不少好用的庫能實(shí)現(xiàn)這個(gè)功能,下面就給大家介紹兩種常見的方法,分別使用 Apache POI 和 Docx4J 結(jié)合 iText 庫來實(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)行對象 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
對象表示 PDF 文檔,用PdfWriter
關(guān)聯(lián)輸出流,然后打開文檔準(zhǔn)備寫入內(nèi)容。遍歷 Word 文檔段落:遍歷 Word 文檔的每個(gè)段落,把段落里的文本提取出來,添加到
StringBuilder
里,再創(chuàng)建Paragraph
對象添加到 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 對象 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 對象:
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ù)自己的需求和喜好選擇合適的方法。趕緊動手試試,讓你的程序輕松搞定文檔轉(zhuǎn)換!
到此這篇關(guān)于Java實(shí)現(xiàn)一鍵將 Word 文檔轉(zhuǎn)為 PDF的示例的文章就介紹到這了,更多相關(guān)Java 一鍵將Word轉(zhuǎn)為 PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)現(xiàn)Word轉(zhuǎn)PDF的全過程
- Java調(diào)用py或者exe文件實(shí)現(xiàn)Word轉(zhuǎn)PDF
- Java實(shí)現(xiàn)一鍵將Word文檔轉(zhuǎn)為PDF
- Java實(shí)現(xiàn)WORD和PDF互相轉(zhuǎn)換以及數(shù)據(jù)填充示例
- java將word轉(zhuǎn)pdf的方法示例詳解
- Java將Word文檔轉(zhuǎn)換為PDF文件的幾種常用方法總結(jié)
- Java中Word與PDF轉(zhuǎn)換為圖片的方法詳解
- Java將Word轉(zhuǎn)換成PDF的常用用法
- 探討Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔
- Java將word文件轉(zhuǎn)成pdf文件的操作方法
- Java實(shí)現(xiàn)word/pdf轉(zhuǎn)html并在線預(yù)覽
相關(guān)文章
java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問題實(shí)例
這篇文章主要介紹了java編程經(jīng)典案例之基于斐波那契數(shù)列解決兔子問題,結(jié)合完整實(shí)例形式分析了斐波那契數(shù)列的原理及java解決兔子問題的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式
這篇文章主要介紹了MyBatis游標(biāo)Cursor在Oracle數(shù)據(jù)庫上的測試方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Java對線程池做監(jiān)控的實(shí)現(xiàn)方法
本文主要介紹了Java對線程池做監(jiān)控的實(shí)現(xiàn)方法,監(jiān)控線程池可以幫助我們了解線程池的狀態(tài),如當(dāng)前活躍線程數(shù)、任務(wù)隊(duì)列長度、已完成任務(wù)數(shù)等,下面就一起來了解一下2024-07-07使用idea創(chuàng)建web框架和配置struts的方法詳解
這篇文章主要介紹了使用idea創(chuàng)建web框架和配置struts的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09SpringBoot集成內(nèi)存數(shù)據(jù)庫H2的實(shí)踐
h2是內(nèi)存數(shù)據(jù)庫,查詢高效,可以在開發(fā)初期使用它。本文主要介紹了SpringBoot集成內(nèi)存數(shù)據(jù)庫H2的實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09java8新特性 stream流的方式遍歷集合和數(shù)組操作
這篇文章主要介紹了java8新特性 stream流的方式遍歷集合和數(shù)組操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08