昨天网上找了很久都只见有人问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打上勾
总结,其实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