基于java的后台截图功能的实现

时间:2022-09-15 11:42:15

Java后台截图功能的实现

背景介绍:

在近期开发的可视化二期项目中的邮件项目中,邮件中的正文中含有图片。该图片的产生是将一些html网页转为图片格式,刚开始考虑使用第三方组件库html2image和一些手动截屏工具。不过如此种解决方式不是对一些css,js支持不完整,就是效率低。

为了实现将网页url作为参数传入,后台自动截图。我们采用了DJ native Swing组件,该组件是由一个名为chrriis的软件工程师开发的。免费开源。该组件主要是以桌面窗体的形式展示的。如何在与web工程整合就需要改造代码。

http://djproject.sourceforge.net/main/index.html 可以下载到最新的jar包(包括Linux版本和win版本)和源码。为了方便起见,该截图所用的jar包都已经随文档放在了文件夹中。

一:功能实现:java后台截图和邮件发送的配合实现案例

案例图示:

基于java的后台截图功能的实现

java后台截图代码的封装

1.截图工具所需工具jar

基于java的后台截图功能的实现

(32位window版本)

在springmvc中写一个controller方法,该方法可以在后台将模拟的Swing窗体启动起来。因为该窗体耗费好多内存,故需要项目启动前将tomcat 内存调大。

2.自定义监听器的编写

自定义监听器的编写主要是为了解决后台截图工具在启动后只能截取一张图的尴尬,为了一个截图工具频繁截取新图片。特意根据swing的api改写了一个自定义的监听器。此监听器与截图工具已整合在了一起。该监听器的主要监听url参数的传入,传入一个url就自动加入到内存一个url队列中。然后后台截图浏览器将拿一个url刷新页面。

如果如下图除了红色类标注外的其他.java文件都是监听器的一部分。

基于java的后台截图功能的实现

3.邮件定时发送的配合使用

邮件平台搭好调试通过后,又加入了定时器的模块,在指定的时间点触发定时器,然后将执行一个名为ServiceImpl的java文件,该java文件产生好多的页面url.这些url正是被截图页面的路径。截图工具自定义监听器监听到这些路径,便会一张张的截图。产生的图片将作为邮件的正文发出去。