用Canvas实现截取网页内容保存为图片

最近有个客户提出需求,要把报表导出成电子版,什么格式都行。

当时我想啊,转成word、Excel不可取,转成pdf可以完整保留页面样式,所以就找各种html转pdf的插件,也试了pechkin、itextsharp等等,然后就发现一个致命的问题。

我的数据是js绑定的,页面里点和线的高度也是根据参照物在页面中的高度计算的,所以要等数据加载完成后再转换,而这两个插件都没转成功。

所以就想啊,只能转成图片了,明确了方向,有目的的寻找解决方案,很快就找到了一个插件,用canvas画出指定的html。这个插件就是html2canvas。传送门:html2canvas

这个插件的调用方法很简单,把需要转成图片的那一部分容器对象传入即可,如果是整个页面,可以传入document.body。

引入js文件

<script src="js/html2canvas.min.js"></script>

下面是测试代码

html2canvas(document.body).then(canvas => { saveImg(canvas) });//按照官网给的调用方式,代码很简洁,saveImg是我自定义的回调函数,用于保存图片,获取到了canvas,就能够用canvas.toDataURL()获取图片的base64字符串,然后进行保存即可。
html2Canvas 是一个 JavaScript 库,它可以将网页上的内容截图并转换为 Canvas 元素。然而,它并不会保存表单元素的输入值,这是因为它只截取网页上的静态内容,而不会捕获用户的交互行为。 如果你想要获取表单元素的输入值,可以通过其他方法来实现。一种常见的方法是使用 JavaScript 来获取表单元素的值,并将其传递给 html2Canvas 进行截图。你可以在截图之前,使用 JavaScript 获取表单元素的值,并将其保存在变量中。然后再使用 html2Canvas网页内容截图,并在需要的时候将保存的表单值与截图一起使用。 以下是一个示例代码,演示如何使用 html2Canvas 和 JavaScript 获取表单元素的输入值: ```html <!DOCTYPE html> <html> <head> <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.0/dist/html2canvas.min.js"></script> </head> <body> <form id="myForm"> <input type="text" id="myInput" value="Hello World"> <button onclick="captureScreenshot()">Capture Screenshot</button> </form> <script> function captureScreenshot() { var inputValue = document.getElementById("myInput").value; html2canvas(document.body).then(function(canvas) { // 在这里可以将 canvas 元素保存图片或进行其他操作 console.log("Input Value: " + inputValue); console.log(canvas); }); } </script> </body> </html> ``` 在上述代码中,我们使用了 `document.getElementById` 方法来获取表单元素的输入值,并将其保存在 `inputValue` 变量中。然后,在 `html2canvas` 的回调函数中,我们可以使用这个变量进行进一步的处理,比如将其打印到控制台或者与截图一起保存。 希望这个示例能帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值