CharlieShen

新人,大家多关照啦@_@

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  3994 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
Cached @ 2025/4/27 0:33:28Control ASP.skins_cogitation_controls_blogstats_ascx
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(14)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/27 0:33:28Control ASP.skins_cogitation_controls_singlecolumn_ascx

输出HTML图文报表

HTML格式输出是Web程序最基本的要求。在输出有图片的报表时,使用PDF格式输出是最好的,HTML很容易出现各种图片显示问题。根据网上资料,在早期iReport0.5以前版本HTML输出图片没有问题,从iReport1.1.0到最新的iReport1.3.0,首先必须在报表输出Servlet中设置参数exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR,Boolean.TRUE),还必须设置“IMAGES_DIR_NAME”、“IMAGES_URI”参数,输出报表时才能在上述参数指定的目录下生成临时图片文件,用户在浏览器上才能看到图片。但是问题产生了,当多用户以不同参数使用同一报表的情况下,临时文件名一般是一样的,用户看到的报表数据是正确的,但插图有可能是别人生成的临时图片。

经过深入研究,笔者发现问题出在输出设置上,目前几乎所有资料在输出HTML格式文件时,都沿用与输出PDF格式文件相同的设置,可通过以下设置实现:

exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,outputStream);

最后动作是将jprint文件直接输出到Servlet的输出流中,而根据分析,PDF图片是在二进制输出流中输出,而HTML输出流中对图片只是一个URL引用。图片虽已作为独立文件生成,以二进制方式在outputStream输出HTML文件时,浏览器不能正确掌握引用图片的时机。为了正确输出图片,根据HTML是文本文件的特性,先将HTML文件输出到一个字符缓冲区当中,再调用outputStream.println()方法以字符流方式打印HTML文件,println()函数以字符方式打印HTML文件,浏览器接受到输出Servlet以println()发来的字符行形式的HTML文件时,可以正确地对已生成的临时图片文件进行引用,从而为用户显示出正确插图的HTML文档。

分享按钮发布于: 2007-09-20 12:39 CharlieShen 阅读(296) 评论(0)  编辑 收藏