Jasper reports jasper报告的HTML格式

Jasper reports jasper报告的HTML格式,jasper-reports,Jasper Reports,我将jasper报告库与GWT应用程序一起使用 报告是生成良好的CSV格式,但与HTML格式,它生成的HTML页面图标缺少图片 我知道贾斯珀使用的透明图像叫“PX”,这个图像没有找到 我怎样才能解决这个问题 提前感谢尝试将图像作为参数传递到报告中,这样就不必担心图像路径 您可以将参数的类型设置为BuffereImage或任何适合的image类。我的解决方案是使用数据URI。这不是很优雅,因为它膨胀了HTML的大小,并且在IE8之前的IE中不起作用,但它确实允许您不用担心用Jasper发送给您的图

我将jasper报告库与GWT应用程序一起使用

报告是生成良好的CSV格式,但与HTML格式,它生成的HTML页面图标缺少图片

我知道贾斯珀使用的透明图像叫“PX”,这个图像没有找到

我怎样才能解决这个问题


提前感谢

尝试将图像作为参数传递到报告中,这样就不必担心图像路径


您可以将参数的类型设置为BuffereImage或任何适合的image类。

我的解决方案是使用数据URI。这不是很优雅,因为它膨胀了HTML的大小,并且在IE8之前的IE中不起作用,但它确实允许您不用担心用Jasper发送给您的图像附件创建文件

如果要实现此功能,请将此参数添加到请求中:

<argument name="IMAGES_URI"><![CDATA[data:]]></argument>


对于大型图像,最好按照Gordon的建议执行,并传入一个参数,该参数指定永久存储在服务器上的文件的URL。这种方法更适合于优雅地处理JasperServer试图向您抛出的任何意外图像。

我讨论得有点晚,但我一直在使用这种方法。关键是将imagesMap同时传递给session属性和exporter参数,并设置IMAGES\u URI exporter参数

private void exportReportAsHtml(HttpServletRequest request, HttpServletResponse response, JasperPrint jasperPrint) throws IOException, JRException {
  response.setContentType("text/html");

  request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);

  Map imagesMap = new HashMap();
  request.getSession().setAttribute("IMAGES_MAP", imagesMap);

  JRHtmlExporter exporter = new JRHtmlExporter();
  exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());
  exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap); 
  exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image?image=");

  exporter.exportReport();

}

如果您没有要显示的图像,则可以执行以下操作:

JasperPrint jasperPrint = JasperFillManager.fillReport(path, parameters, con);
JRHtmlExporter htmlExporter = new JRHtmlExporter();
response.setContentType("text/html");
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, false);
htmlExporter.exportReport();
重要的一点是:

htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, false);

这将使所有“px”映像消失。

甚至不能远程线程安全。不应该在web应用程序中执行。如果pray tell customer打开两个浏览器选项卡并同时生成报告该怎么办?上面的代码需要在简单替换之前检查现有的图像映射,但除此之外,打开两个选项卡的用户会将其报告导出两次。我也有同样的问题。当你接受答案时,你能给出答案吗?如何将图像路径传递到报告?
htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, false);