Java实现Word转PDF文件(高效不失真)

两种主流方案详解 | 完整代码示例 | 生产环境可用

摘要:在企业应用开发中,经常需要将Word文档转换为PDF格式以确保内容的不可篡改性和跨平台一致性。本文将介绍两种在Java中高效、不失真地实现Word转PDF的方法,并提供完整的可运行代码。

为什么选择Java进行Word转PDF?

Java作为企业级应用开发的主流语言,在文档处理方面有着成熟的解决方案。通过Java程序自动化转换Word到PDF,可以:

方法一:使用 Apache POI + iText

此方法适用于简单的.docx文档转换,依赖纯Java库,部署简单。

添加Maven依赖

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.1.15</version>
        <type>pom</type>
    </dependency>
</dependencies>

Java转换代码

import org.apache.poi.xwpf.usermodel.*;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class WordToPdfConverter {
    
    public static void convert(String wordPath, String pdfPath) throws Exception {
        // 读取Word文档
        XWPFDocument document = new XWPFDocument(new FileInputStream(wordPath));
        
        // 创建PDF写入器
        PdfWriter writer = new PdfWriter(pdfPath);
        com.itextpdf.kernel.pdf.PdfDocument pdfDoc = new com.itextpdf.kernel.pdf.PdfDocument(writer);
        Document pdfDocument = new Document(pdfDoc);
        
        // 遍历Word段落并写入PDF
        for (XWPFParagraph paragraph : document.getParagraphs()) {
            String text = paragraph.getText();
            if (text != null && !text.trim().isEmpty()) {
                pdfDocument.add(new Paragraph(text));
            }
        }
        
        // 关闭资源
        pdfDocument.close();
        document.close();
    }
    
    public static void main(String[] args) {
        try {
            convert("input.docx", "output.pdf");
            System.out.println("转换完成!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
注意:此方法对复杂格式(如表格、图片、样式)支持有限,适合内容简单的文档。

方法二:调用 LibreOffice(推荐,高保真)

利用LibreOffice强大的文档渲染引擎,通过命令行调用实现高质量的Word到PDF转换,几乎完美保留原始格式。

前提条件

在服务器上安装 LibreOffice

Java调用代码

import java.io.File;

public class LibreOfficeConverter {
    
    /**
     * 使用LibreOffice将Word文档转换为PDF
     * @param inputWordPath 输入的Word文件路径
     * @param outputPdfPath 输出的PDF文件路径
     * @return 转换是否成功
     */
    public static boolean convertToPdf(String inputWordPath, String outputPdfPath) {
        try {
            File inputFile = new File(inputWordPath);
            File outputFile = new File(outputPdfPath);
            
            // 确保输入文件存在
            if (!inputFile.exists()) {
                System.err.println("输入文件不存在: " + inputWordPath);
                return false;
            }
            
            // 构建命令
            String command;
            if (System.getProperty("os.name").toLowerCase().contains("win")) {
                // Windows系统
                command = "soffice --headless --convert-to pdf --outdir \"" 
                        + outputFile.getParent() + "\" \"" + inputWordPath + "\"";
            } else {
                // Linux/Mac系统
                command = "libreoffice --headless --convert-to pdf --outdir \"" 
                        + outputFile.getParent() + "\" \"" + inputWordPath + "\"";
            }
            
            // 执行命令
            Process process = Runtime.getRuntime().exec(command);
            int exitCode = process.waitFor();
            
            // 检查输出文件
            File generatedPdf = new File(outputFile.getParent(), 
                    inputFile.getName().replaceFirst("\\.[^.]+$", "") + ".pdf");
            
            return exitCode == 0 && generatedPdf.exists();
            
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    
    public static void main(String[] args) {
        boolean success = convertToPdf("example.docx", "result.pdf");
        System.out.println("转换" + (success ? "成功" : "失败"));
    }
}
优势:格式保持度极高,支持.doc和.docx,适合生产环境。
缺点:需要安装LibreOffice,占用资源较多。

性能对比与选择建议

方案 转换质量 部署复杂度 适用场景
Apache POI + iText ★☆☆☆☆ 低(纯Java) 简单文本文档,轻量级应用
LibreOffice调用 ★★★★★ 中(需安装软件) 正式生产环境,要求高保真
Word文档右上角关闭键没了?一招教你快速找回关闭按钮 华为电脑预装的Windows系统是正版吗?权威解析 别人发的Word文件怎么修改?多种方法详解 Word向下箭头:插入方法与使用技巧 - 详细教程 如何缩小PDF文件大小?简单有效的压缩方法指南 Word文档错别字校对指南 - 快速准确发现并修正错误 Word文档没有保存怎么恢复文件?多种方法教你找回丢失内容 DeepSeek生成Word文档完整指南 - 高效AI文档创作教程 Word的撤回键在哪?一文看懂撤销与恢复操作 华为Windows系统笔记本电脑多功能专题页 Word文档数字加圆圈:详细操作方法与技巧 Word文档压缩大小 - 简单有效的文件瘦身方法 可安装Windows系统的手机机型专题 手机安装Windows系统可以用软件吗?技术现状与可行性分析 Word文档无法打字怎么解决?常见原因与修复方法大全 Word文档太大怎么缩小?5个简单方法快速压缩文件体积 Word文字被虚线框起来的设置方法 - 详细图文教程 Word撤销快捷键详解 - 快速掌握Ctrl+Z使用技巧 Word数字突然间隔变大?快速解决方法大全 Word文档2020下载 - 免费获取Microsoft Word 2020官方版 Windows系统更新后无法联网?快速解决方法指南 DeepSeek 1.5B手机部署指南 - 手把手教你本地运行大模型 Word文字太长但不换行?一招解决文本溢出问题 Word红头文件模板免费下载 - 符合国家标准的可编辑公文模板 Word邮件格式模板下载 - 免费可编辑的商务邮件模板 Word中创建90度转弯箭头的完整指南 - 图文教程 Word文档怎么退出修订模式 - 详细操作指南 如何对比两个PDF文件 - 简单实用的PDF差异对比方法 DeepSeek处理图片:AI驱动的智能图像分析解决方案 Windows系统一键重装 - 简单高效的系统恢复方案 Windows系统原版壁纸合集 - 经典与现代的视觉盛宴 Word文档怎么去掉底色?多种方法快速清除背景色 平板Windows系统免费安装完全指南 - 教程与资源 WPS怎么免费压缩文件?详细操作步骤教程 DeepSeek本地部署完整教程 | 从零开始搭建本地大模型 正版Windows系统可以重装系统吗?详细解答与操作指南 图片转Word文档在线转换 - 免费OCR识别工具 Word文档制作目录完全指南 - 手把手教你自动生成专业目录 Windows系统总是未响应?原因与解决方法全解析 手机Windows系统还能用微信吗?现状与解决方案 Windows系统自带的浏览器是哪个?全面解析Edge与IE的演变 怎么把手机变成Windows系统?详细方法与注意事项 DeepSeek如何生成动图 - 教程指南 使用过Windows系统的手机 - 回顾经典移动设备 Word文档查找技巧大全 - 高效搜索文字与格式 Word文件比较工具 - 在线免费对比文档差异 在线Word文档对比工具 - 免费快速比较两个Word文件差异 Word文档深色模式怎么取消?详细图文教程 Word文字离表格太近?3种方法轻松解决排版问题 Word文档如何知道字数 - 详细操作指南 怎么看电脑装的Windows系统的版本?详细方法指南 Windows系统平板怎么安装安卓系统 - 完整教程指南 Word文档字间距很大?快速解决方法大全 Word文档怎么在下一行打字?详细操作方法指南 Word文档怎么左右排版?详细操作教程 Word怎么添加页码?超详细图文教程一步到位 DOC文件太大了怎么缩小?多种实用方法一键解决 Word文档另起一行:完整操作指南与技巧 Word文档文字跑到页面外去了?快速解决方法大全 平板电脑装Windows系统浏览器使用指南 - 优化您的移动浏览体验 Windows系统设置在哪打开?多种方法详解 Word文档如何转换为PPT - 详细指南 Word文档怎么并排两个表格?详细操作方法教程 Word文档校对功能在哪里?详细位置与使用方法指南 Excel怎么转Word文档格式?多种方法详解 Word文档怎么撤销?详细操作方法与快捷键大全 华为平板哪一款是Windows系统?最新产品信息与替代方案 Excel表格转换为Word文档 - 详细教程与方法 DeepSeek脚本怎么生成视频 - AI视频生成技术详解 Word文档编辑教程 - 零基础入门到精通 Word箭头自动对齐排版技巧 - 详细教程与实用方法 WPS软件PDF转Word转换教程 - 免费高效转换方法详解 Word文档使用技巧与教程专题 - 掌握高效办公必备技能 手机安装Windows系统U盘教程 - 详细步骤与工具指南 重装系统后启用或关闭Windows系统功能指南 幕布可以导出Word文档吗?详细操作步骤指南 Word怎么调出文件选项?详细操作指南 Word文档怎么变大页面?5种方法轻松调整页面显示大小 Deepseek自用穿甲弹:高效模型调优与实战技巧 - 专题页 重装Windows系统之前的软件还在吗?一文看懂系统重装影响 如何在Word文档中添加拐弯箭头 - 详细图文教程 Windows系统下载好了怎么打开安装?详细步骤指南 Word文档段落互换位置的实用技巧 - 快速交换段落方法指南 新款Windows系统怎么安装软件?完整指南 - 新手必看 如何安全删除原有的Windows系统 - 完整操作指南 Word文档文字排版完全指南 - 提升文档专业度的实用技巧 Windows平板电脑性能排行2025 - 主流型号性能对比 华为M6可以装Windows系统吗?技术分析与使用建议 DeepSeek咒语:解锁AI潜能的提示词技巧大全 Word文档如何查重?详细操作方法与技巧 - 原创检测指南 deepsleep下载安卓版 - 免费深度睡眠辅助应用下载 免费PDF文件对比软件推荐 | 快速准确比较PDF差异 苹果电脑打不开Windows系统怎么办?全面解决方法指南 安卓如何打开Markdown文件?实用方法与应用推荐 手机使用Windows系统:技术现状与未来展望 哪部手机有Windows系统?回顾微软Windows手机历史 怎么用Deepseek写脚本 - AI辅助编程入门指南 Word文字溢出纸张边界问题解析与解决方案 作文怎么转成Word文档?简单几步教你轻松完成转换 平板电脑怎么变成Windows系统?详细转换教程与注意事项