Java實現一鍵將Word文檔轉為PDF的兩種方法
嘿,朋友們!在開發(fā)中,經常會碰到需要把 Word 文檔轉換成 PDF 格式的需求,像生成報告、合同啥的。Java 有不少好用的庫能實現這個功能,下面就給大家介紹兩種常見的方法,分別使用 Apache POI 和 Docx4J 結合 iText 庫來實現 Word 轉 PDF。
方法一:使用 Apache POI 和 iText
1. 引入依賴
如果你用 Maven 管理項目,在 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();
// 遍歷段落中的文本運行對象
for (XWPFRun run : paragraph.getRuns()) {
text.append(run.getText(0));
}
// 將段落文本添加到 PDF 文檔中
Paragraph pdfParagraph = new Paragraph(text.toString());
pdfDoc.add(pdfParagraph);
}
// 關閉文檔和流
pdfDoc.close();
document.close();
fis.close();
System.out.println("Word 轉 PDF 成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Word 轉 PDF 失敗:" + e.getMessage());
}
}
}3. 代碼解釋
讀取 Word 文檔:用
FileInputStream讀取input.docx文件,再用XWPFDocument類把它加載到內存。創(chuàng)建 PDF 文檔:創(chuàng)建
Document對象表示 PDF 文檔,用PdfWriter關聯輸出流,然后打開文檔準備寫入內容。遍歷 Word 文檔段落:遍歷 Word 文檔的每個段落,把段落里的文本提取出來,添加到
StringBuilder里,再創(chuàng)建Paragraph對象添加到 PDF 文檔中。關閉文檔和流:操作完成后,關閉 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"));
// 轉換并保存為 PDF
Docx4J.toPDF(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);
// 關閉輸出流
os.close();
System.out.println("Word 轉 PDF 成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Word 轉 PDF 失?。? + e.getMessage());
}
}
}3. 代碼解釋
加載 Word 文檔:用
WordprocessingMLPackage.load方法加載input.docx文件。創(chuàng)建 FOSettings 對象:
FOSettings用于配置轉換設置,把加載的 Word 文檔設置進去。創(chuàng)建輸出流:創(chuàng)建
FileOutputStream用于輸出 PDF 文件。轉換并保存為 PDF:調用
Docx4J.toPDF方法進行轉換,并將結果保存到輸出流。關閉輸出流:操作完成后,關閉輸出流。
嘿,朋友們!這兩種方法都能幫你用 Java 把 Word 文檔轉換成 PDF。你可以根據自己的需求和喜好選擇合適的方法。趕緊動手試試,讓你的程序輕松搞定文檔轉換!
到此這篇關于Java實現一鍵將 Word 文檔轉為 PDF的示例的文章就介紹到這了,更多相關Java 一鍵將Word轉為 PDF內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyBatis游標Cursor在Oracle數據庫上的測試方式
這篇文章主要介紹了MyBatis游標Cursor在Oracle數據庫上的測試方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
使用idea創(chuàng)建web框架和配置struts的方法詳解
這篇文章主要介紹了使用idea創(chuàng)建web框架和配置struts的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

