html生成报表 图片,jasperreport生成HTML报表时的图片img_0_0_1问题解决(图片控件在HTML......

昨天网上找了很久都只见有人问img_0_0_1问题,就是没有正确的答案,很郁闷,网上最多的是说的px图片显示的解决,那个比较简单,加个参数指定下路径就行,今天不多讲了,只讲关于自已插入的图片控件设好正确的地址最后还是显示不出来,而被替换成img_0_0_1的问题,最后不得已只能反了它的原代码自已来找原因。

原码片段如下:net.sf.jasperreports.engine.export.JRHtmlExporter

this.writer.write("

String imagePath = null;

String imageMapName = null;

List imageMapAreas = null;

ScaleImageEnum scaleImage = image.getScaleImageValue();

if (renderer != null)

{

if ((renderer.getType() == 0) && (this.rendererToImagePathMap.containsKey(renderer.getId())))

{

imagePath = (String)this.rendererToImagePathMap.get(renderer.getId());

}

else

{

if (image.isLazy())

imagePath = ((JRImageRenderer)renderer).getImageLocation();

}

else

{

JRPrintElementIndex imageIndex = getElementIndex(gridCell);

this.imagesToProcess.add(imageIndex);

String imageName = getImageName(imageIndex);

imagePath = this.imagesURI + imageName;

if (this.imageNameToImageDataMap != null)

{

if (renderer.getType() == 1)

{

renderer = new JRWrappingSvgRenderer(renderer, new Dimension(image.getWidth(), image.getHeight()), ModeEnum.OPAQUE == image.getModeValue() ? image.getBackcolor() : null);

}

this.imageNameToImageDataMap.put(imageName, renderer.getImageData());

}

}

this.rendererToImagePathMap.put(renderer.getId(), imagePath);

}

看到 String imageName = getImageName(imageIndex);

imagePath = this.imagesURI + imageName;

imageIndex 值是图片索引值,第一张是1

String imageName = getImageName(imageIndex);

这句之后imageName 值是img_0_0_1哦,原来这个是这么来的

imagePath = this.imagesURI + imageName;这句之后就是你的基础路径+img_0_0_1,所以HTML上是怎么也出不来了

PDF XLS能出来估计生成代码是不一样的。

那么,怎么解决呢?

看它上面这段:

if (image.isLazy()){imagePath = ((JRImageRenderer)renderer).getImageLocation();

}

原来还可以懒加载的,这样它就去读getImageLocation()应该是自己给你URL不管是这段还是之前那段,最后都会放到MAP

this.rendererToImagePathMap.put(renderer.getId(), imagePath);

不多说了,直接看解决方法:

JAVA中写到:

report_params.put("image1_url","/springMVC/report/images/2010.jpg");

ireport中需要这样:

1、在报表中放入IMG对象

2、对象属性设置

ExpressionClass :java.lang.String

IMAGE EXPRESSION :$P{REPORT_PARAMETERS_MAP}.get("image1_url")

Is Lazy打上勾

5713c70af38f93549ca48a94542190c4.png

a91f253b37ee2490428e37b391369355.png

总结,其实jasperreport中还有很多密秘哦,你不防去反个原码看个底透。

更多可配置参数:

JRHtmlExporterParameter.HTML_HEADER

JRHtmlExporterParameter.BETWEEN_PAGES_HTML

JRHtmlExporterParameter.HTML_FOOTER

JRHtmlExporterParameter.IMAGES_DIR

JRHtmlExporterParameter.IMAGES_DIR_NAME

JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS

JRHtmlExporterParameter.IS_WHITE_PAGE_BACKGROUND

JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR

JRHtmlExporterParameter.IMAGES_URI

JRHtmlExporterParameter.IMAGES_MAP

JRHtmlExporterParameter.IS_WRAP_BREAK_WORD

JRHtmlExporterParameter.SIZE_UNIT

JRHtmlExporterParameter.ZOOM_RATIO  缩放哦,你去试试 2.0f

JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN

JRHtmlExporterParameter.FRAMES_AS_NESTED_TABLES

JRHtmlExporterParameter.FLUSH_OUTPUT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值