文章目录
- 前言
- OpenHTMLToPDF 简介
- maven配置依赖
- 字体文件
- demo代码
- 其他
- 资源放置截图
- 防止maven编译字体文件
前言
AI和网上都是跑不起来或者版本过低的,还有各种BUG的。本文都是查阅官方文档得出的。如果你能跑起来请给个大大的赞!
OpenHTMLToPDF 简介
OpenHTMLToPDF 是一个纯 Java 库,基于 Flying Saucer 和 Apache PDFBox 2,支持将格式良好的 XML/XHTML(甚至一些 HTML5)文档渲染为 PDF 文件。它支持 CSS 2.1 及其后续标准进行布局和格式化,并能够处理 SVG 图像。
maven配置依赖
<!-- OpenHTMLToPDF 核心库 --><dependency><groupId>at.datenwort.openhtmltopdf</groupId><artifactId>openhtmltopdf-core</artifactId><version>1.1.4</version></dependency><!-- PDFBox 渲染器 --><dependency><groupId>at.datenwort.openhtmltopdf</groupId><artifactId>openhtmltopdf-pdfbox</artifactId><version>1.1.4</version></dependency><dependency><groupId>at.datenwort.openhtmltopdf</groupId><artifactId>openhtmltopdf-svg-support</artifactId><version>1.1.4</version></dependency><!-- Batik 核心库 --><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-dom</artifactId><version>1.14</version> <!-- 与 OpenHTMLToPDF 兼容的版本 --></dependency><!-- Batik 常量库 --><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-constants</artifactId><version>1.14</version> <!-- 与 OpenHTMLToPDF 兼容的版本 --></dependency><!-- Batik SVG 生成器 --><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-svggen</artifactId><version>1.14</version> <!-- 与 OpenHTMLToPDF 兼容的版本 --></dependency>
字体文件
阿里可商用字体下载路径
HTML使用字体文件
<body style=\"font-family: 'PuHuiTi'\">
demo代码
public class SvgHtmlToPdfConverter {//分页 <div style='page-break-before: always;'></div>public static void convertHtmlToPdf(String htmlContent, String pdfPath) throws IOException {try (FileOutputStream fos = new FileOutputStream(pdfPath)) {PdfRendererBuilder builder = new PdfRendererBuilder();// 正确写法:类路径绝对路径(需以 "/" 开头)// 1. 获取资源 URLbuilder.useFont(() -> SvgHtmlToPdfConverter.class.getResourceAsStream("/fonts/Alibaba-PuHuiTi-Regular.ttf"),"PuHuiTi", 12, PdfRendererBuilder.FontStyle.NORMAL, true);builder.toStream(fos);builder.useFastMode();builder.withHtmlContent(htmlContent,null);builder.useSVGDrawer(new BatikSVGDrawer());// 4. 输出到 PDFbuilder.run();}}public static void main(String[] args) {try {convertHtmlToPdf("html代码.........", "D:\\output.pdf");} catch (IOException e) {e.printStackTrace();}}}
其他
资源放置截图
防止maven编译字体文件
<resources><resource><directory>src/main/resources</directory><filtering>true</filtering><excludes><exclude>**/*.ttf</exclude></excludes></resource><resource><directory>src/main/resources</directory><filtering>false</filtering><includes><include>**/*.ttf</include></includes></resource></resources>