这个问题在这里已有答案:
我正在研究需要渲染页面并在客户端(浏览器)端制作屏幕截图的Web应用程序 .
我不需要将屏幕截图保存在本地硬盘上,只需将其保存在RAM中并稍后将其发送到应用程序服务器即可 .
我研究过:
-
BrowserShots一样的服务......
-
机械化浏览器......
-
wkhtmltoimage ...
-
Python WebKit2PNG ......
但这些都没有给我我所需要的一切,这是:
-
在浏览器端处理(生成页面截图) . 不需要保存在硬盘上!只是...
-
...将图像发送到服务器进行进一步处理 .
-
捕获整页(不仅仅是可见部分)
最后,我找到了谷歌的反馈工具(点击YouTube页脚上的"feedback"查看此内容) . 它包含JavaScript for JPG encoding和另外两个巨大的脚本,我无法确定它们到底做了什么......
但它是在客户端进行处理的 - 否则将这个巨大的JPEG编码器放入代码中就没有意义了!
任何人都知道他们是如何制作的/我如何制作它?
以下是反馈示例(在某些屏幕上报告错误)
3 回答
“Using HTML5/Canvas/JavaScript to take screenshots”回答你的问题 .
您可以使用JavaScript / Canvas来完成这项工作,但它仍然是实验性的 .
我需要对页面上的div进行快照(对于我编写的webapp),它受到JWT的保护并且非常大量地使用Angular .
我没有任何上述方法的运气 .
我最终得到了我需要的div的outerHTML,清理了一点(*),然后将它发送到我运行wkhtmltopdf的服务器 .
这对我来说非常好 .
(*)我的页面中的各种输入设备在pdf中查看时没有呈现为已检查或具有文本值...所以我在html上运行了一些jQuery,然后再发送它进行渲染 . 例如:对于文本输入项 - 我将它们的.val()复制到'value'属性中,然后可以通过wkhtmlpdf查看
SnapEngage 使用 Java applet 提供此服务 . 您可以使用其产品Snapabug或使用here信息重新创建其功能 . 你也可以阅读它here .