一个所有 AI 都无法提供的前端 PDF 生成方案

41 天前
 lmq1919

目前的前端生成 pdf 方案

方案 缺点
html2canvas + jspdf 图片式的 pdf,文件体积大,无法选中编辑文字,模糊
jspdf / pdfmake 等 学习成本高,使用复杂

我的方案

  1. 修改了 html2canvas 的 renderCanvas 方法,将绘制 canvas 的 api 换成了 jspdf 的 api 。
  2. 开发者不再需要手动计算 pdf 的布局,就可以直接将 html 转化成可编辑的矢量 pdf 。
  3. 使用方法和 html2canvas 基本一样,上手难度非常低

1. 在线体验

https://dompdfjs.lisky.com.cn

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

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

2751 次点击
所在节点    分享创造
23 条回复
weixind
41 天前
这种实现方案边缘 case 会比较多吧,牛的牛的,已 star 。

报个 bug ,demo 里面 table 直接生成会有偏差。

pike0002
41 天前
先关注一下,有机会在我们的插件中尝试一下 https://www.pixelstech.net/application/pagesaver/
lmq1919
41 天前
@weixind 感谢大佬!!应该是和屏幕分辨率有关系,我晚上回去把宽度写死应该就可以了
ssb4
41 天前
试了下 demo ,没一个正常的...

Microsoft Edge
版本 138.0.3351.109 (正式版本) (64 位)
ssb4
41 天前
lmq1919
41 天前
@pike0002 很棒的产品
lmq1919
41 天前
@ssb4 感谢反馈
guansixu
41 天前
跨页问题有好的处理方法吗?之前用 html2canvas + jspdf ,跨页怎么不好处理
lmq1919
41 天前
@guansixu 目前在开发分页的功能
ersic
41 天前
官方提供的例子,生成都不正常。win + edge
lmq1919
41 天前
@ersic 感谢大佬反馈
kokerkov
41 天前
没看懂。你这个跟 wkhtmltopdf 有啥区别?
lmq1919
41 天前
@kokerkov wkhtmltopdf 需要服务器,我这个是纯前端浏览器运行的
xhawk
41 天前
我用 pdfkit 也挺简单的
lmq1919
41 天前
@xhawk 如何要绘制图表就复杂了,所以会有 jsPDF-AutoTable 这种库,还只能绘制简单的表格
imaple
40 天前
@ssb4 #5 基本和你一样,win+edge
lmq1919
40 天前
@imaple 很有可能是 edge 用了 IE 内核,可以用 chrome 试一下
Felix96
40 天前
官网例子提一个上面没说到过的 bug 吧,macOS + Chrome 环境 MacBook 窗口小的情况下,滚动一段距离,点击 Generate PDF 会截断。同为前端,非常希望 OP 能做成,先收藏了,顺便分享我的:纯前端实现列印就 jsPDF , 因为中文字体需要下载几十兆的资源,解决方法是将各种塞 indexedDB 里。如果超级复杂且可靠能高保真, @page + size 调好交给 puppeteer ,100% 没问题,多复杂都能实现,可以复制,当然 puppeteer 优化的压力就给后端了。
imaple
40 天前
@lmq1919 #17 换了 chrome 一切正常, 效果很好。
lmq1919
40 天前
@Felix96 感谢大佬的支持和分享

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1148670

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX