Java后台截图功能的实现
背景介绍:
在最近开发的可视化二期项目中的邮件项目中,邮件中的正文中含有图片。
该图片的产生是将一些html网页转为图片格式,刚開始考虑使用第三方组件库html2image和一些手动截屏工具。
只是如此种解决方案不是对一些css,js支持不完整。就是效率低。
为了实现将网页url作为參数传入。后台自己主动截图。我们採用了DJ native Swing组件。该组件是由一个名为chrriis的软件project师开发的。
免费开源。该组件主要是以桌面窗口的形式展示的。怎样在与webproject整合就须要改造代码。
http://djproject.sourceforge.net/main/index.html 能够下载到最新的jar包(包含Linux版本号和win版本号)和源代码。为了方便起见,该截图所用的jar包都已经随文档放在了目录中。
一:功能实现:java后台截图和邮件发送的配合实现案例
案例图示:
java后台截图代码的封装
1.截图工具所需工具jar
(32位window版本号)
在springmvc中写一个controller方法。该方法能够在后台将模拟的Swing窗口启动起来。由于该窗口耗费好多内存。故须要项目启动前将tomcat 内存调大。
2.自己定义监听器的编写
自己定义监听器的编写主要是为了解决后台截图工具在启动后仅仅能截取一张图的尴尬。为了一个截图工具频繁截取新图片。
特意依据swing的api改写了一个自己定义的监听器。此监听器与截图工具已整合在了一起。该监听器的主要监听url參数的传入,传入一个url就自己主动增加到内存一个url队列中。然后后台截图浏览器将拿一个url刷新页面。
假设例如以下图除了红色类标注外的其它.java文件都是监听器的一部分。
3.邮件定时发送的配合使用
邮件平台搭好调试通过后,又增加了定时器的模块,在指定的时间点触发定时器,然后将运行一个名为ServiceImpl的java文件,该java文件产生好多的页面url.这些url正是被截图页面的路径。截图工具自己定义监听器监听到这些路径。便会一张张的截图。
产生的图片将作为邮件的正文发出去。