【完备可用】利用openhtmltopdf天生PDF(带SVG)
媒介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. 获取资源 URL
builder.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. 输出到 PDF
builder.run();
}
}
public static void main(String[] args) {
try {
convertHtmlToPdf("html代码.........", "D:\\output.pdf");
} catch (IOException e) {
e.printStackTrace();
}
}
}
其他
资源放置截图
https://i-blog.csdnimg.cn/direct/dd9ae09753c64d8ea642dae8af2834f6.png
防止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>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]