完整指南:从环境配置到代码实现
在Java开发中,将Word文档(.doc或.docx)转换为PDF格式是一项常见的需求。本文将详细介绍实现该功能所需的配置文件和核心代码,帮助开发者快速集成文档转换功能。
主要涉及的技术栈包括:Apache POI 用于读取Word文档,结合 iText 或其他渲染库生成PDF。
在Maven项目中,需要在pom.xml中添加以下依赖:
<dependencies>
<!-- Apache POI for reading .docx files -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<!-- iText for PDF generation -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.3</version>
</dependency>
<!-- Optional: for better styling and conversion -->
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.xdocreport.converter.docx.poi.itext</artifactId>
<version>2.0.5</version>
</dependency>
</dependencies>
如果使用Gradle构建项目,可在build.gradle中添加:
dependencies {
implementation 'org.apache.poi:poi-ooxml:5.2.3'
implementation 'com.itextpdf:itextpdf:5.5.13.3'
implementation 'fr.opensagres.xdocreport:fr.opensagres.xdocreport.converter.docx.poi.itext:2.0.5'
}
以下是一个简单的Java类,演示如何读取Word文件并转换为PDF:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class WordToPdfConverter {
public static void convert(String wordFilePath, String pdfFilePath) throws Exception {
try (FileInputStream fis = new FileInputStream(wordFilePath);
XWPFDocument document = new XWPFDocument(fis)) {
Document pdfDoc = new Document();
PdfWriter.getInstance(pdfDoc, new FileOutputStream(pdfFilePath));
pdfDoc.open();
// 简化处理:实际项目中需逐段落解析并写入PDF
pdfDoc.add(new com.itextpdf.text.Paragraph("Word文档转换成功!"));
pdfDoc.close();
}
}
public static void main(String[] args) {
try {
convert("input.docx", "output.pdf");
System.out.println("转换完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
中文乱码:确保PDF字体支持中文,可使用BaseFont嵌入中文字体(如SimSun)。
样式丢失:POI + iText原生组合对复杂样式支持有限,推荐使用docx4j或XDocReport。
性能优化:对于大批量转换,建议使用异步处理或服务化部署。