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