canvas转pdf_html2canvas + jspdf 实现 html 转 pdf

在前端开发中, html 转 pdf 是最常见的需求,实现这块需求的开发 html2canvas 和 jspdf 是最常用的两个插件,插件都是现成的,但是有时候用不好,也不出现很多头疼问题:

1. 生成的 pdf 清晰度不高,比较模糊;

2.多页 pdf 会出现把内容给分割的情况,特别是文字被分割时,体验很不友好;

3.页面较宽或较长时,或出现生成的 pdf 内容不全的情况。

如果你在项目中出现以上情况,那么不着急,往下看就对了,下面的代码统统为你解决了

话不多说,直接上代码:

/*

以上方法支持,生成的 pdf 为 单页或多页可选,如果不是需求必须是多页的,建议都选择生成 单页的,为什么呢?

因为单页不会出现内容或文字分割的情况。

但是,如果内容过长超过 14400 的话,那么你会发现 14400 之外的内容获取不到了,这是为什么呢?看来 jspdf 的源码之后找到答案,源码里面有限制:

1fffee82e3f30e8d48cb7a4e00287e4f.png

不过,我的代码里已经解决过长的问题(宽度一般不会超过,特殊场景暂不考虑),超过 14400 时,按照高度就为 14400 来算缩放比例,宽度按比例缩放好像就行了,这就完事了?

不不不,好像还有坑,就是 orientation ,有两个值 "portrait" or "landscape",默认是 'p', 当 orientation = 'p' 且 width > height 时, 他默认会把 width 和 height 值交换,如果你不想要他交换,那么当你的 width > height 时,你把 orientation 动态改为 'l' 即可,反之亦然。

ed71c54075cace2d925692cfed7d906b.png

以上希望对你有用,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值