V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lmq1919
V2EX  ›  分享创造

开源了一个前端 html 生成 pdf 的 js 库,各项指标是目前主流方案(周下载 80 万)的数倍到数十倍

  •  1
     
  •   lmq1919 · 7 小时 30 分钟前 · 733 次点击

    目前前端 html 转 pdf 的主流方案是先用 html2canvas 将 html 转成图片,再将图片绘制到 pdf 上,本质是披着 pdf 外衣的图片,代表 js 库就是 html2pdf.js ,在 npm 周下载量达到了 80 万。

    dompdf.js

    这是我开源的前端 html 生成 pdf 的库,用了和目前主流方案完全不同的思路,可以直接在前端生成可编辑的,非图片式的矢量 pdf

    在线体验

    https://dompdfjs.lisky.com.cn

    Git 仓库地址 (欢迎 Star⭐⭐⭐)

    https://github.com/lmn1919/dompdf.js

    核心特性

    • 使用简单 - 前端一行代码就可以实现转 PDF 功能

    • 🎨 纯前端实现 pdf 生成 - 无需服务器介入

    • 💻 生成的是矢量 PDF- PDF 的文字可以搜索选中编辑,更小的文件体积,文字不会模糊

    • 📱 精准的页面分割处理- 避免页面元素被切割

    • 🚀 可生成上千页的 PDF 文件- 对比一般方案( html2canvas+jspdf ),提升了几百倍

    • 📦 自定义页眉页脚- 可以根据需求,自定义页眉页脚

    html2pdf.js 与 dompdf.js 对比

    指标 说明
    生成速度 同样的内容,dompdf.js 生成速度更快,耗时基本上只有 html2pdf.js 的 1/2 。
    文件体积 dompdf.js 生成的 pdf 文件体积更小,同样的内容页数,dompdf.js 生成的 pdf 文件体积是 html2pdf.js 的 1/5 左右。
    文件清晰度 文件放大后,html2pdf.js 生成的 pdf 文字会出现明显的锯齿,而 dompdf.js 生成的 pdf 文字则完全没有压力。
    生成页数 html2pdf.js 在 30 页左右,由于 canvas 高度限制,就会出现空白页,而 dompdf.js 轻松可以生成数百上千页的 pdf ,取决于你的浏览器内存。
    8 条回复    2026-03-05 15:57:37 +08:00
    THESDZ
        1
    THESDZ  
       6 小时 58 分钟前
    PDF generation failed: Error: Invalid arguments passed to jsPDF.context2d.fillText
    MyDearFather
        2
    MyDearFather  
       6 小时 46 分钟前
    忒中力,喃试试
    Razio
        3
    Razio  
       6 小时 37 分钟前
    感觉这种还是挺影响样式的。然后随便点了几次打印,我看你网站的图片延迟已经开始到十几秒了,危险啊,不行整点缓存吧
    knva
        4
    knva  
       6 小时 29 分钟前
    卡了
    chairuosen
        5
    chairuosen  
       6 小时 8 分钟前
    我感觉主流的还是用 chromium 内核转 pdf 吧?这样 CSS 兼容性最好。你这个方案是重新实现了一遍 CSS 么? CSS3 样式支持怎么样?
    wangwen135
        6
    wangwen135  
       3 小时 46 分钟前
    👍
    korvin
        7
    korvin  
       2 小时 9 分钟前
    试试,刚好前段时间写一个网页转 pdf 的结果出来是图片就放弃了
    hoythan
        8
    hoythan  
       1 小时 39 分钟前
    我觉得 PDF 核心是为了解决不同设备样式不统一的问题,编辑功能反而对“前端生成 PDF”需求来说是次要的。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5254 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.