Apache POI HTML转Word与PDF功能实现
HTML 的自动转 Word 和 PDF 的需求,多 Java 项目都绕不开,是搞文档导出的。Apache POI和pd4ml这俩库用下来还挺顺手的,基本能覆盖大部分场景。
Apache POI主要是搞 Word 那一块。你只要在pom.xml
里加上poi
和poi-ooxml
的依赖,写个几行代码,就能把 HTML 字符串写进.docx
文档里了。虽然不能直接解析 HTML 结构,但配合下Jsoup
做点预,样式和结构能保得比较好。
public void htmlToWord(String html, String outputPath) {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();
XWPFRun run = p.createRun();
run.setText(html); // 简单示例,复杂 HTML 得加解析
try (OutputStream out = new FileOutputStream(outputPath)) {
doc.write(out);
} catch (IOException e) {
e.printStackTrace();
}
}
pd4ml那边就直接一点,转 PDF 挺方便。它本身就吃 HTML 结构,设置下页面大小,路径搞定后直接扔进去就能出 PDF。要是有乱码,那率是没加字体路径,记得用setFontPath
指定下字体目录。
public void htmlToPdf(String html, String outputPath) {
PD4ML pd4ml = new PD4ML();
pd4ml.setPageWidth(595);
pd4ml.setPageHeight(842); // A4 尺寸
try (FileOutputStream fos = new FileOutputStream(outputPath)) {
pd4ml.convertHtml(html, fos);
} catch (Exception e) {
e.printStackTrace();
}
}
乱码问题时,字体和编码是关键。UTF-8
一定要统一,另外你也可以在启动参数里加上poicharset.default
来保证POI
那边不会搞错字符集。
,这两套方案配合用,比较适合搞 Java 后台导出文档的场景。如果你经常要做报表、模板套打之类的,强烈建议试试。
27.12MB
文件大小:
评论区