Java实现一键将Word文档转为PDF,
Java实现一键将Word文档转为PDF,
目录
- 方法一:使用 Apache POI 和 iText
- 1. 引入依赖
- 2. 代码示例
- 3. 代码解释
- 方法二:使用 Docx4J
- 1. 引入依赖
- 2. 代码示例
- 3. 代码解释
在开发中,经常会碰到需要把 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); // 创建 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 类把它加载到内存。
创建 PDF 文档:创建 Document 对象表示 PDF 文档,用 PdfWriter 关联输出流,然后打开文档准备写入内容。
遍历 Word 文档段落:遍历 Word 文档的每个段落,把段落里的文本提取出来,添加到 StringBuilder 里,再创建 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")); // 创建 FOSettings 对象 FOSettings foSettings = Docx4J.createFOSettings(); foSettings.setWmlPackage(wordMLPackage); // 创建输出流 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 文件。
创建 FOSettings 对象:FOSettings 用于配置转换设置,把加载的 Word 文档设置进去。
创建输出流:创建 FileOutputStream 用于输出 PDF 文件。
转换并保存为 PDF:调用 Docx4J.toPDF 方法进行转换,并将结果保存到输出流。
关闭输出流:操作完成后,关闭输出流。
嘿,朋友们!这两种方法都能帮你用 Java 把 Word 文档转换成 PDF。你可以根据自己的需求和喜好选择合适的方法。
到此这篇关于Java实现一键将Word文档转为PDF的文章就介绍到这了,更多相关Java Word转PDF内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!
您可能感兴趣的文章:- Java使用aspose实现pdf转word
- java将word转pdf的方法示例详解
- Java中Word与PDF转换为图片的方法详解
- Java将Word转换成PDF的常用用法
- Java将word文件转成pdf文件的操作方法
- Java实现word/pdf转html并在线预览
- Java实现PDF转Word的示例代码(无水印无页数限制)
用户点评