- 浏览: 7339527 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1821排列不分先后: 1. 当 ... -
整合Struts2+JasperReport Web报表应用示例
2013-04-22 13:56 2289整合Struts2+JasperReport Web报表应用 ... -
关于H2使用的那些事
2012-12-14 16:40 27222在项目中采用H2作为工 ... -
Java 分割功能实现
2011-08-25 08:39 2795在项目针对比较大的文件需要文件的分割功能,特意写了一个 ... -
反射工具类
2010-04-25 10:47 2401package easyway.tbs.client.bm.u ... -
项目中Hibernate中Criteria和Query查询和模式引用
2010-02-21 15:52 2456在项目中Hibernate中Criteria和Q ... -
json 在项目中开发一个巧妙地应用
2009-12-12 16:49 3905在项目中需要保存客户的信息到Cookie中,因为客户要求 ... -
项目中使用时间工具类
2009-11-21 16:43 3035项目中使用的时间工具类的主要的采用commons-l ... -
Spring项目的测试用例
2009-08-22 12:49 2332在项目的开发过程中使用Junit4测试代码,使用 ... -
jBPM与Spring整合浅析
2009-08-22 12:41 26641、创建公文流转相关的实体类,并创建数据库表 2、根据对用 ... -
Hibernate正向工程hbm2ddl
2009-08-19 10:14 2312一般在项目开 ... -
Hibernate中用户类型(User Type)应用
2009-08-16 09:08 3143在项目中许多地方使用枚举类,枚举对象值对应数据一个常 ... -
关于常用城市控件中数据的处理方案
2009-08-15 19:41 2420在项目中由于多次使用的国家省份城市的控件,以前采 ... -
在Spring2.5注解时必须注意几点
2009-08-15 19:22 2137项目中采用Spring2.5配置重点内容如下: ... -
中文转换拼音的实现思路以及实现
2009-08-15 18:40 2918在项目中一位大师兄写的中文转换拼音代码:自己整理一下 ... -
在项目中一些相关常量数组使用枚举应用
2009-08-15 18:01 2622在项目中采用Hibernate中支持枚举类型因此我们使用许 ... -
在项目开发中关于Hibernate注解的配置的一些说明
2009-08-15 13:26 4350在项目开发中采用Hibernate3注解方式实现关 ... -
关于项目中泛型的应用
2009-08-15 12:38 2399在项目采用JDK1.6采用泛型开发,在开发应用之中减少了大 ... -
针对项目中XML解析的扩展应用
2009-08-15 12:14 2580由于项目中多个需 ...
相关推荐
标题和描述中提到的"实现word文件转换成html文件实现在线打开预览word文件",这是一个关于将Microsoft Word文档转换为HTML格式,以便在网页上预览的技术问题。下面将详细介绍这个过程涉及的关键知识点。 1. **...
总结来说,C#中将HTML文件转换为Word文档是一个涉及到HTML解析、图片处理和Word文档生成的过程。通过选择合适的库和编写适当的代码逻辑,可以高效地实现这个功能,即使在没有安装Word软件的环境下也能完成转换,并且...
TowerJ是一款专为Java应用程序设计的转换工具,能够将Java的.class文件转换为Windows平台下的exe文件,特别适合于小型项目或简单应用程序的快速发布。 #### 方法七:使用jshrink jshrink是一款能够将JAR文件转换为...
总的来说,将HTML网页转换为图片保存到本地涉及C#的图形绘制、WebBrowser控件的使用以及文件操作等多个方面的知识,是一个综合性的编程任务。掌握这些技能有助于提升开发者在Web相关领域的应用开发能力。
将sb3文件转换为exe文件是为了在没有安装Scratch的Windows系统上运行。这通常需要借助一些第三方软件,比如"Griffpatch's Scratch Executable Converter"或"Scrtch2Exe"。这些工具可以将sb3项目打包成一个可执行文件...
4. **反向转换**:如果需要将Base64字符串还原为原始图片,可以使用`Convert.FromBase64String`方法,然后将字节数组写入文件。 ```vb Dim decodedBytes As Byte() = Convert.FromBase64String(base64String) My....
总的来说,"html2image"项目为Java开发者提供了一个简单易用的工具,用于将HTML内容转换为图片,同时解决了中文乱码问题。通过理解项目结构、依赖和核心方法,开发者可以轻松地将其集成到自己的应用中,实现更多定制...
综上所述,这个HTML5应用开发案例主要涉及了拖放API、FileReader API以及表单文件输入的使用,这些技术都是HTML5增强网页交互性和功能的重要工具。通过这些技术,开发者可以创建更动态、用户友好的Web应用,例如在线...
HTML5Plus应用开发指南是针对使用HTML5进行移动应用开发的一套详细教程和文档。它不仅仅是一个技术文档,更是一个全面的开发指南,旨在帮助开发者从零基础入门到精通整个HTML5Plus开发流程。在介绍HTML5Plus规范之前...
HTML页面转换为图片的技术在网页开发中非常有用,例如用于屏幕截图、页面预览或社交媒体分享。`html2canvas`是一个流行的JavaScript库,它能够将HTML元素渲染为Canvas,进而可以将其转换为图像格式,如JPEG、PNG或...
总结来说,Apache POI提供了一种跨平台的方式来将Office文件转换为HTML,这对于需要在各种环境中处理Office文档的Java开发人员来说非常有用。尽管它可能不如某些特定平台的解决方案那样全面,但对于大多数基本转换...
本篇文章将深入探讨如何使用C#编程语言将Word文件转换为HTML格式,同时保持原有的格式不变。这一过程对于那些希望在网页上展示Word内容或者需要进行跨平台文档共享的用户来说尤其重要。 首先,我们需要理解的是,...
在Java开发中,将HTML转换为图片是一种常见的需求,例如用于网页截图、报表生成或邮件模板预览。本文将深入探讨几种不同的方法,分析它们的优缺点,以帮助开发者选择最适合项目需求的解决方案。 1. **Java2DPDF库转...
在本篇文章中,我们将深入探讨如何将HTML页面转换为图片,并讨论与之相关的技术和工具。 首先,我们来看HTML页面的基本构成。HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言,它包含文本、...
综上所述,将Word文档转换为HTML在Android应用中的实现涉及到文件解析、数据转换、HTML生成、WebView使用等多个技术环节,需要对Android开发、Java编程以及Web技术有深入理解。在实际操作中,开发者需要结合具体的...
标题中的“KML文件转换工具”指的是用于处理和转化KML(Keyhole Markup Language)文件的应用程序。KML是一种基于XML的语言,主要用于地理信息系统(GIS),由Google开发,用于存储地理定位信息,如位置、标记、...
在Android平台上,将HTML内容转换为PDF文档是一项常见的需求,特别是在需要将网页内容保存或打印时。...通过这个工具,开发者可以轻松地将动态生成的HTML内容转换为用户友好的PDF文件,从而提高应用的用户体验。
- 数据可视化:将图表或其他动态数据转换为图片,便于离线查看。 6. **标签解析**: - "电子签名":表明html2canvas可以用于创建符合规范的电子签名图像。 - "canvas":html2canvas的核心就是利用Canvas API来...
总的来说,这个工具为Typora用户提供了便利,通过将本地图片转换为Base64编码并嵌入HTML文件,确保了HTML文档在任何地方都能完整显示,而无需依赖原始图片文件。对于那些需要频繁分享markdown文档或HTML文章的用户来...
在img2html中,图片的每个像素颜色会被转换为相应的颜色代码,应用到对应的HTML元素上。 3. **布局策略**:为了在HTML页面上正确排列这些元素,img2html可能采用网格布局或者流式布局。网格布局将图片分割成固定...