您的位置:首页 > 游戏 > 手游 > 武汉建设网信息网_无锡弘腾网络科技有限公司_广告关键词_武汉十大技能培训机构

武汉建设网信息网_无锡弘腾网络科技有限公司_广告关键词_武汉十大技能培训机构

2025/2/12 16:48:04 来源:https://blog.csdn.net/wang543203/article/details/145524048  浏览:    关键词:武汉建设网信息网_无锡弘腾网络科技有限公司_广告关键词_武汉十大技能培训机构
武汉建设网信息网_无锡弘腾网络科技有限公司_广告关键词_武汉十大技能培训机构

嘿,朋友们!在开发中,经常会碰到需要把 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"));// 转换并保存为 PDFDocx4J.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。你可以根据自己的需求和喜好选择合适的方法。赶紧动手试试,让你的程序轻松搞定文档转换!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com