当前位置: 代码网 > it编程>编程语言>Java > Java实现一键将Word文档转为PDF的两种方法

Java实现一键将Word文档转为PDF的两种方法

2025年04月28日 Java 我要评论
嘿,朋友们!在开发中,经常会碰到需要把 word 文档转换成 pdf 格式的需求,像生成报告、合同啥的。java 有不少好用的库能实现这个功能,下面就给大家介绍两种常见的方法,分别使用 apache

嘿,朋友们!在开发中,经常会碰到需要把 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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

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

发表评论

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