Java后台截图功能的实现

背景介绍:

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

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

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正是被截图页面的路径。截图工具自定义监听器监听到这些路径,便会一张张的截图。产生的图片将作为邮件的正文发出去。

基于java的后台截图功能的实现的更多相关文章

  1. 记一次"截图"功能的项目调研过程!

    目录 项目需求 功能调研 AWT Swing Html2Image PhantomJS Headless Chrome 实现方案 结论 项目需求 最近,项目接到了一个新需求,要求对指定URL进行后端模 ...

  2. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

  3. 在微信框架模块中,基于Vue&Element前端的后台管理功能介绍

    微信开发包括公众号.企业微信.微信小程序等方面的开发内容,需要对腾信的微信API接口进行封装:包括事件.菜单.订阅用户.多媒体文件.图文消息.消息群发.微信支付和企业红包.摇一摇设备.语义理解.微信小 ...

  4. 免费开源数字货币交易所——基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所

    本项目是基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎.本项目基于SpringCloud微服务开发,可用来搭建和二次开发数字货币 ...

  5. 基于java平台的常用资源整理

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  6. 这里整理了基于java平台的常用资源

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  7. [.NET领域驱动设计实战系列]专题七:DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户 ...

  8. 基于Java的开源CMS系统选择(转)

    CMS概述 对于网站CMS系统而言,基于PHP的是主流,如Drupal/Joomla在各个主流虚拟机提供商上都是标准配置,也被广泛使用. 但如果你拥有Java团队,或者项目目标是想建立一个企业网使用的 ...

  9. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

随机推荐

  1. CCIE-MPLS VPN-实验手册(中卷)

    5:MPLS VPN PE CE OSPF 实验1 5.1 实验拓扑 5.2 实验需求 a. R1 R2 R3 组成P-NETWORK,底层协议采用EIGRP b. R1 R2 R3 直连链路启用LD ...

  2. 交叉编译器安装 gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)

    安装环境    :ubuntu 14.04 安装包       :toolchain.tar.gz 编译器版本:gcc version 4.3.3 (Sourcery G++ Lite 2009q1- ...

  3. 如何使用Git和码云Git@OSC

    1.Git简介 关于Git是什么,阅读博客Git简介 2.Git 基础 Git命令很多,常用命令如下图 Workspace:工作区 Index/Stage :暂存区 Local Repository: ...

  4. 201521123083 《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains public ...

  5. 微信小程序swiper标签的测试

    swiper属性(具体看官方文档): 一:testswiper.wxml的代码如下.testswiper.js自动生成示例代码. //testswiper.wxml <view > < ...

  6. 201521123092《java程序设计》第四周学习总结

    1.本周学习总结 #1.尝试使用思维导图总结有关继承的知识点. #2.使用常规方法总结其他上课内容. 本周主要学习了继承的相关知识,用关键词extends来定义一个类,被继承的类叫做父类,继承的类叫做 ...

  7. 201521123028 《Java程序设计》第2周学习总结

    1. 本周学习总结 1.学习了String及部分函数用法,例如PTA上<5-2 jmu-Java-02基本语法-02-StringBuilder>一题中用到了"str.appen ...

  8. Windbg调试(关于句柄表的获取,32位)

    今天利用Windbg(x86)进行了获得句柄表的调试,从中获益良多,对调试步骤和按键又一次进行了熟悉,对于句柄表页的概念更是得到了进一步的清晰认识.windbg调试和句柄表不熟悉的朋友可以借鉴我的调试 ...

  9. Linux硬链接软连接

    转载原文出处:http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html 1.Linux链接概念 Linux链接分两种,一种被称为硬链接( ...

  10. JDBC操作数据库之连接数据库

    通过JDBC向数据库中添加数据的时候,使用insert语句实现数据的插入,再SQL语句中的参数可以用占位符"?"来替代,然后通过PreparedStatement对象或者State ...