当前位置: 代码网 > it编程>编程语言>Java > Java使用docx4j实现将Word文档转换为PDF

Java使用docx4j实现将Word文档转换为PDF

2026年04月02日 Java 我要评论
使用 docx4j 实现 docx 转 pdf,核心是通过 xsl-fo + apache fop 进行格式转换。以下是完整、可直接运行的方案(maven + java)。一、核心依赖(maven)需

使用 docx4j 实现 docx 转 pdf,核心是通过 xsl-fo + apache fop 进行格式转换。以下是完整、可直接运行的方案(maven + java)。

一、核心依赖(maven)

需引入 docx4j-core 和 pdf 导出模块 docx4j-export-fo

<dependencies>
    <!-- docx4j 核心库 -->
    <dependency>
        <groupid>org.docx4j</groupid>
        <artifactid>docx4j-core</artifactid>
        <version>11.5.4</version>
    </dependency>
    <!-- fo 导出(转pdf必需) -->
    <dependency>
        <groupid>org.docx4j</groupid>
        <artifactid>docx4j-export-fo</artifactid>
        <version>11.5.4</version>
    </dependency>
    <!-- jaxb 实现(jdk 9+ 必须显式引入) -->
    <dependency>
        <groupid>org.docx4j</groupid>
        <artifactid>docx4j-jaxb-referenceimpl</artifactid>
        <version>11.5.4</version>
    </dependency>
</dependencies>

二、最简转换代码(含中文支持)

import org.docx4j.docx4j;
import org.docx4j.fonts.identityplusmapper;
import org.docx4j.fonts.mapper;
import org.docx4j.fonts.physicalfonts;
import org.docx4j.openpackaging.packages.wordprocessingmlpackage;
import java.io.file;
import java.io.fileoutputstream;
import java.io.outputstream;
public class docxtopdfconverter {
    public static void convert(string docxpath, string pdfpath) throws exception {
        // 1. 加载 docx 文件
        wordprocessingmlpackage pkg = wordprocessingmlpackage.load(new file(docxpath));
        // 2. 配置字体映射(解决中文乱码/方框问题)
        mapper fontmapper = new identityplusmapper();
        // 自动扫描系统字体
        physicalfonts.discoverphysicalfonts();
        // 常用中文字体映射(windows/linux通用)
        fontmapper.put("宋体", physicalfonts.get("simsun"));
        fontmapper.put("微软雅黑", physicalfonts.get("microsoft yahei"));
        fontmapper.put("黑体", physicalfonts.get("simhei"));
        fontmapper.put("楷体", physicalfonts.get("kaiti"));
        fontmapper.put("隶书", physicalfonts.get("lisu"));
        pkg.setfontmapper(fontmapper);
        // 3. 转换并输出 pdf
        try (outputstream os = new fileoutputstream(pdfpath)) {
            // flag_export_prefer_xsl:兼容性最好
            docx4j.topdf(pkg, os);
        }
    }
    // 测试
    public static void main(string[] args) throws exception {
        convert("input.docx", "output.pdf");
        system.out.println("转换完成");
    }
}

三、测试结果

原始文档

转换效果

四、结论

格式兼容性问题比较多,简单文档可以使用,兼容性要求高的情况下,建议放弃

由于不能预知要转换的文档中使用了哪些中文字体,可能出现###,这个问题比较严重

到此这篇关于java使用docx4j实现将word文档转换为pdf的文章就介绍到这了,更多相关java docx4j实现word转pdf内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com