欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【完整可用】使用openhtmltopdf生成PDF(带SVG)

【完整可用】使用openhtmltopdf生成PDF(带SVG)

2025/4/18 22:02:12 来源:https://blog.csdn.net/qq_28369007/article/details/147119256  浏览:    关键词:【完整可用】使用openhtmltopdf生成PDF(带SVG)

文章目录

  • 前言
  • 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>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词