bkhtmltopdf - 高性能 HTML 转 PDF 工具(代替 wkhtmltopdf)

bkhtmltopdf 的名称来源于 Blink HTML to PDF ,其中 Blink 是 Chromium 的渲染引擎。

由于 wkhtmltopdf 停止更新(我猜可能是 QtWebKit 的兼容问题),所以我开发了一个 bkhtmltopdf。它基于 Java + CEF 开发,并支持了更多特性,在企业中生成 PDF 报告、账单、报表、医疗单、体检单等场景下非常有用。

功能/特性

  • 极高的性能
  • 采用 Chromium 新版本(135+)
  • 支持 HTML5、CSS3、JavaScript 等高级特性
  • 页眉、页脚、大纲、无障碍 PDF
  • 多语言、多字体(支持CJK、老挝、藏语等少数语言)
  • 高精度保真(生成的 PDF 与 HTML 效果完全一致)
  • 集成条形码 (支持QRCode、Code128、Code11等近百种条形码)
  • 集成图表(基于 Apache ECharts )
  • 支持 Markdown 转 PDF

安装

下载最新版本 ,下载之后执行(需要 JDK 21及以上):

bash 复制代码
java -jar bkhtmltopdf-x.y.z.jar

条形码

如果要使用条形码,只需要一行代码即可实现。

生成的条码基于 SVG 矢量图,所以 PDF 可以无限放大。这样的好处是打印出来的 PDF 文件不会失真、出现毛刺等问题。

html 复制代码
<barcode type="qrcode" value="Hi, bkhtmltopdf." width="200px" height="200px"
         alt="This is a QR code whose value is: Hi, bkhtmltopdf."/>

<barcode type="code128" value="123456789" width="200px" height="200px" options="includetext"
         alt="This is a Code 128 whose value is: 123456789"/>

在线运行

图表

如果要使用图表功能,也只需要简单的几行代码。

html 复制代码
<chart src="chart-1" width="500" height="500" alt="This is a chart"/>

<script id="chart-1" type="application/json5">
    {xAxis:{type:'category',data:['Mon','Tue','Wed','Thu','Fri','Sat','Sun']},yAxis:{type:'value'},series:[{data:[150,230,224,218,135,147,260],type:'line'}]}
</script>

在线运行

最佳实践

账单

准考证

相关推荐
十年Java程序媛8 分钟前
Java 面试常问 this、super:构造方法调用顺序避坑
java·开发语言·spring boot·面试·个人开发
3378018 分钟前
5分钟搞懂Spring的IoC和Bean管理
java
学到老活到老19 分钟前
类已经加载了,为什么静态代码还没执行?
java·jvm
学到老活到老20 分钟前
写了 new,就一定会在堆上分配对象吗?
java·jvm
进击的明明21 分钟前
前端开发中的 BEM 国际命名规范:让 CSS 不再"打架"
前端·css·html
Web极客码23 分钟前
决策模型 + LLM:用 Python 拆解浏览器自动化工作流
java·python·自动化
飞天小牛肉24 分钟前
线程池明明没到最大线程数,为什么任务还在排队?
java
用户0723670666026 分钟前
用 Groovy 做动态 Mock:参数分支、造真数据、模拟异常
java·groovy
yuniko-n27 分钟前
【JUC】内存屏障
java·开发语言
泡茶喝茶写代码1 小时前
A股量化策略回测实战:从行情数据到绩效评估(第 13 篇):放量突破策略
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口