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

2025-05-14 05:04:47 156
魁首哥

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

方法一:使用 apache poi 和 itext

1. 引入依赖

如果你用 maven 管理项目,在pom.xml里添加以下依赖:


    
    
        org.apache.poi
        poi-ooxml
        5.2.3
    
    
    
        com.itextpdf
        itextpdf
        5.5.13.3
    

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里添加以下依赖:


    
        org.docx4j
        docx4j-jaxb-internal
        11.4.9
    
    
        org.docx4j
        docx4j-jaxb-referenceimpl
        11.4.9
    
    
        org.docx4j
        docx4j
        11.4.9
    
    
        org.docx4j
        docx4j-export-fo
        11.4.9
    

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

分享
海报
156
上一篇:Java Stream流使用案例深入详解 下一篇:Java常见运算符之位运算符大全

忘记密码?

图形验证码