- 浏览: 7254157 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
项目使用的基本思路如下:
在项目中发送传真的,传真的信息是由freemarker模板框架生成形成的html文件,通过freemarker获取html文件的內容,通过SWing中组件html信息转换为图片基本.
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JTextPane;
import javax.swing.plaf.basic.BasicEditorPaneUI;
/**
* 通过JTextPane目的显示html信息并绘制图片信息
*
* @author longgangbai
*
*/
public class PrintView {
public JTextPane panel = null;
public PrintView(JTextPane panel) {
this.panel = panel;
}
/**
* 绘制图片的方法
*
* @param g
* @param hPage
* @param pageIndex
* @return
*/
public boolean paintPage(Graphics g, int hPage, int pageIndex) {
Graphics2D g2 = (Graphics2D) g;
Dimension d = ((BasicEditorPaneUI) panel.getUI())
.getPreferredSize(panel);
double panelHeight = d.height;
double pageHeight = hPage;
int totalNumPages = (int) Math.ceil(panelHeight / pageHeight);
g2.translate(0f, -(pageIndex - 1) * pageHeight);
panel.paint(g2);
boolean ret = true;
if (pageIndex >= totalNumPages) {
ret = false;
return ret;
}
return ret;
}
}
/**
* HTML转换图片的方式
*
* @author longgangbai
*
*/
public class GraphUtils {
private final static Logger logger = Logger.getLogger(GraphUtils.class);
public static int DEFAULT_IMAGE_WIDTH = 1024;
public static int DEFAULT_IMAGE_HEIGHT = 768;
/**
* 将BufferedImage转换为图片的信息
*
* @param image
* @return
*/
public static String toJpeg(BufferedImage image) {
// 获取图片文件的在服务器的路径
String imageName = FaxUtils.getFaxServerFileDir() + File.separator
+ FaxUtils.getSytemFormatDate() + DEFAULT_IMAGE_FORMATSYTLE;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
byte[] buff = baos.toByteArray();
baos.close();
// 将字节流写入文件保存为图片
FileUtils.writeByteArrayToFile(new File(imageName), buff);
System.out.println("保存成功!....");
} catch (Exception ex) {
logger.error("保存删除图片失败:" + ex.getMessage());
}
return imageName;
}
/**
* html转换为jpeg文件
*
* @param bgColor
* 图片的背景色
* @param html
* html的文本信息
* @param width
* 显示图片的Text容器的宽度
* @param height
* 显示图片的Text容器的高度
* @param eb
* 設置容器的边框
* @return
* @throws Exception
*/
private static ArrayList<String> html2jpeg(Color bgColor, String html,
int width, int height, EmptyBorder eb) throws Exception {
ArrayList<String> ret = new ArrayList<String>();
try {
JTextPane tp = new JTextPane();
tp.setSize(width, height);
if (eb == null) {
eb = new EmptyBorder(0, 50, 0, 50);
}
if (bgColor != null) {
tp.setBackground(bgColor);
}
if (width <= 0) {
width = DEFAULT_IMAGE_WIDTH;
}
if (height <= 0) {
height = DEFAULT_IMAGE_HEIGHT;
}
tp.setBorder(eb);
tp.setContentType("text/html");
tp.setText(html);
PrintView m_printView = new PrintView(tp);
int pageIndex = 1;
boolean bcontinue = true;
while (bcontinue) {
BufferedImage image = new java.awt.image.BufferedImage(width,
height, java.awt.image.BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setClip(0, 0, width, height);
bcontinue = m_printView.paintPage(g, height, pageIndex);
g.dispose();
String path = toJpeg(image);
ret.add(path);
pageIndex++;
}
} catch (Exception ex) {
throw ex;
}
return ret;
}
/**
*
* @param bgColor
* @param html
* @param width
* @param height
* @return
* @throws Exception
*/
public static ArrayList<String> toImages(Color bgColor, String[] htmls,
int width, int height) throws Exception {
ArrayList<String> imglist = new ArrayList<String>();
for (int i = 0; i < htmls.length; i++) {
imglist.addAll(html2jpeg(bgColor, htmls[i], width, height,
new EmptyBorder(0, 0, 0, 0)));
}
return imglist;
}
/**
*
* @param bgColor
* @param html
* @param width
* @param height
* @return
* @throws Exception
*/
public static ArrayList<String> toImages(Color bgColor, String html,
int width, int height) throws Exception {
return html2jpeg(bgColor, html, width, height, new EmptyBorder(0, 0, 0,
0));
}
/**
* 将一個html转换为图片
*
* @param htmls
* @return
* @throws Exception
*/
public static ArrayList<String> toImages(String html) throws Exception {
return html2jpeg(null, html, DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_WIDTH,
new EmptyBorder(0, 0, 0, 0));
}
/**
* 将多个html转换图片
*
* @param htmls
* @return
* @throws Exception
*/
public static ArrayList<String> toImages(String[] htmls) throws Exception {
ArrayList<String> imglist = new ArrayList<String>();
for (int i = 0; i < htmls.length; i++) {
imglist.addAll(html2jpeg(null, htmls[i], DEFAULT_IMAGE_WIDTH,
DEFAULT_IMAGE_WIDTH, new EmptyBorder(0, 0, 0, 0)));
}
return imglist;
}
}
评论
原理就是讲html在AWT组件上面显示,将AWT显示内容生成为图片,即可。
g2.setBackground(Color.white);
g2.clearRect(0, 0, hPage, hPage);
就可以了。目的是把Graphics清成白色的。就OK了.我试过了。还有。在加载html文档中最好让进程睡眠几分钟。
不晓得,当时的解决方案是那种,不明白,希望继续交流!!
g2.setBackground(Color.white);
g2.clearRect(0, 0, hPage, hPage);
就可以了。目的是把Graphics清成白色的。就OK了.我试过了。还有。在加载html文档中最好让进程睡眠几分钟。
我项目中有时也出现这种问题,我自己查一下可能是网上说是Swing 中组件的限制Text的长度,本人实现:原理中正好使用了Swing的组件JTextPane ,本人将html内容减少(删除html的header子类等)后,此种现象出现很少。希望自己查看一下代码是否有问题。
lz可否指导一二?
在下mail:zorrox@163.com
发表评论
-
编程的十四条经验
2013-05-06 10:32 1795排列不分先后: 1. 当 ... -
整合Struts2+JasperReport Web报表应用示例
2013-04-22 13:56 2249整合Struts2+JasperReport Web报表应用 ... -
关于H2使用的那些事
2012-12-14 16:40 27079在项目中采用H2作为工 ... -
Java 分割功能实现
2011-08-25 08:39 2744在项目针对比较大的文件需要文件的分割功能,特意写了一个 ... -
反射工具类
2010-04-25 10:47 2352package easyway.tbs.client.bm.u ... -
项目中Hibernate中Criteria和Query查询和模式引用
2010-02-21 15:52 2399在项目中Hibernate中Criteria和Q ... -
json 在项目中开发一个巧妙地应用
2009-12-12 16:49 3866在项目中需要保存客户的信息到Cookie中,因为客户要求 ... -
项目中使用时间工具类
2009-11-21 16:43 2992项目中使用的时间工具类的主要的采用commons-l ... -
Spring项目的测试用例
2009-08-22 12:49 2290在项目的开发过程中使用Junit4测试代码,使用 ... -
jBPM与Spring整合浅析
2009-08-22 12:41 26321、创建公文流转相关的实体类,并创建数据库表 2、根据对用 ... -
Hibernate正向工程hbm2ddl
2009-08-19 10:14 2262一般在项目开 ... -
Hibernate中用户类型(User Type)应用
2009-08-16 09:08 3094在项目中许多地方使用枚举类,枚举对象值对应数据一个常 ... -
关于常用城市控件中数据的处理方案
2009-08-15 19:41 2366在项目中由于多次使用的国家省份城市的控件,以前采 ... -
在Spring2.5注解时必须注意几点
2009-08-15 19:22 2095项目中采用Spring2.5配置重点内容如下: ... -
中文转换拼音的实现思路以及实现
2009-08-15 18:40 2836在项目中一位大师兄写的中文转换拼音代码:自己整理一下 ... -
在项目中一些相关常量数组使用枚举应用
2009-08-15 18:01 2560在项目中采用Hibernate中支持枚举类型因此我们使用许 ... -
在项目开发中关于Hibernate注解的配置的一些说明
2009-08-15 13:26 4312在项目开发中采用Hibernate3注解方式实现关 ... -
关于项目中泛型的应用
2009-08-15 12:38 2351在项目采用JDK1.6采用泛型开发,在开发应用之中减少了大 ... -
针对项目中XML解析的扩展应用
2009-08-15 12:14 2543由于项目中多个需 ...
相关推荐
mdwebhook, 使用webhooks将 Markdown 文件转换为HTML的示例应用程序 Markdown Webhook这个简单的示例应用程序使用webhooks来得到Dropbox中新 Markdown 文件的通知。 然后它将所有的Markdown 文件转换为 HTML 。阅读...
2.3 android应用项目文件组成 2.3.1 androidmanifest.xml文件 2.3.2 src目录 2.3.3 常量的定义文件 2.4 程序生命周期 2.4.1 android周期 2.4.2 android进程 2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析...
实例067 使用ParseExact方法将字符串转化为 日期格式 84 实例068 使用ToString方法格式化日期 85 实例069 使用ToDateTime方法转换日期显示 格式 86 3.5 常用数字验证技巧 87 实例070 使用正则表达式验证电话号码 87 ...
'* 程序功能:将 GB、BIG5、UTF-8 文件相互转换,方便的批量处理能力, '* 主要用于网站文件编码方式的整体转换上。 '* '* 特别提醒:程序不保证文件绝对安全,使用前请备份! '* '* 开发环境:Visual Basic6.0(SP6)...
全书一共被压缩为5个rar,这是第二个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...
全书一共被压缩为5个rar,这是第三个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...
此应用程序的目的是帮助您将二进制数转换为文本,使其更易于理解。该应用程序提供了多种文本转换选项,您可以在转换过程中进行选择。虽然这是一个简单的项目,但它提供了对二进制数的更好理解。随意探索应用程序的...
全书一共被压缩为5个rar,这是第四个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...
该控件可以独立工作,不需要安装MS Word或其它字处理软件。该组件可以将 RTF 转换成 HTML 3.2、HTML 4.01 和 XHTML ...该组件只有150K左右大小,但它的速度可达到每秒转换2-3个HTML文件。 原厂:SautinSoft (试用版)
"可二次开发上传图片功能.rar" 是一个压缩文件包,它包含了一组源代码和必要的资源文件,旨在为学生或开发者提供一个基础的、可扩展的图片上传功能的实现。该源码文件包可以作为计算机科学或软件工程专业的学生的...
解压密码:123 ||GemBox Bundle 2021是一个一体化的应用程序,它将处理办公文件和文档的所有基本工具组合在一个包中。 它为。net开发人员提供了各种令人惊叹的工具和特性,例如捕获、创建、编辑形状、文本和图片、...
全书一共被压缩为5个rar,这是第五个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何...
用于将 HTML 转换为网络应用程序。 发展 lein run 此命令将: 在端口 10555 上启动网络服务器 启动 Figwheel 服务器,负责实时重新加载 ClojureScript 代码和 CSS。 一切都完成启动后,您将能够浏览到并查看正在...
Color Converter 应用程序是使用 JavaScript 编程语言开发的。这是一个用户友好的应用程序,可以自由定制以满足您的需求。该程序的目的是帮助您为您的配色方案选择各种颜色表示。该应用程序提供了一种通过使用滑块或...
IXS浏览器是一款基于IE内核的应用程序开发平台.使用它,您可以使用DHTML/脚本来开发...对于已有的基于IIS的应用,您只需点几下鼠标,就可以把它转化为基于桌面的应用. 脚本是加密码的,您不必担心您的程序被非法获取.
这种情况下,我们就可以既充分利用Java语言的开发优势降低Ajax应用开发的难度,加快Ajax应用的开发速度,为Ajax的大规模应用创造可能,又可以充分发挥Ajax技术的优势,创建更加动态和交互性更好的Web应用程序,提升...