请教 移动端 web 页面如何导出为 pdf

2020-09-18 16:26:11 +08:00
 sybb
有个移动端的 web 项目,想把页面输出成一个 pdf 文件, 来实现打印页面到 A4 纸
我了解的是 pc 端的网页可以直接用 window.print()方法输出页面的 pdf, 但是移动端的话就没有这个方法了
请教一下各位有什么方案可行呢
3390 次点击
所在节点    JavaScript
12 条回复
alertZ
2020-09-18 16:53:04 +08:00
可以试一下这个方法。先使用 html2canvas 将 HTML 转成 canvas,然后调用 canvas 方法转成图片。最后使用 jspdf 将图片导出为 PDF 文件。之前在 angular 的一个项目上是使用这种方法导出的。
JerryY
2020-09-18 16:57:37 +08:00
让后端生成 [逃
zhuweiyou
2020-09-18 17:09:17 +08:00
一楼理论上可行, 但是手机上不会触发 download, 视频 /文档之类的浏览器应该会直接预览...
alertZ
2020-09-18 17:23:50 +08:00
@zhuweiyou 恩,之前那个项目是没有在移动端测试过。不过我在网上找了一个 demo,尝试了一下,在微信浏览器和小米浏览器上能够触发下载。 测试地址: https://linwalker.github.io/render-html-to-pdf/demo5.html
cirzear
2020-09-18 17:29:44 +08:00
一楼的方法跟我之前做的 vue 的项目里用的一样,这个方案绘制页面为图片时,页面滚动条必须在顶部,不然会导致页面绘制图片不全的情况
ccraohng
2020-09-18 17:36:00 +08:00
如果要兼容 ios ,最好后端返回文件流的
zhuweiyou
2020-09-18 17:49:32 +08:00
@alertZ 我的 iOS, 微信点了没反应, Safari 点了会跳出一个 PDF 预览页,除非去点浏览器的菜单,存储到文件....
TimePPT
2020-09-18 18:10:46 +08:00
之前做过都是后端生成,生成后给到下载链接,还可以填写邮箱发邮件。
Sparetire
2020-09-19 08:19:44 +08:00
后端跑 pupputeer 访问页面导出 pdf 前端下载,唯一需要注意的是前端页面需要适配下 pdf 打印
abelmakihara
2020-09-19 09:42:16 +08:00
html2canvas 之前用的时候有坑..
包括 5#说的绘制不全
还有超过一页也有问题(这个后来自己改源码才好的..
部分 css 失效等
sybb
2020-09-19 10:07:59 +08:00
@Sparetire 感谢感谢 我试上一试
@abelmakihara 感谢感谢 我会试一下用后端来动态渲染出 pdf 内容模版 然后存起来下载
edk24
2020-09-19 15:00:44 +08:00
php 后端用 mPDF

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

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

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

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

© 2021 V2EX