我想了很久:圖像不能以ireport html格式顯示
我使用iReport設計器創建了報告。在它顯示所有格式的圖像(PDF,Excel,RTF),但是當我嘗試在JSP中以HTML格式顯示時,圖像不顯示。我想要解決這個問題。我正在嘗試這個很長一段時間。任何人都可以幫我嗎?
在此先感謝。
我想了很久:圖像不能以ireport html格式顯示
我使用iReport設計器創建了報告。在它顯示所有格式的圖像(PDF,Excel,RTF),但是當我嘗試在JSP中以HTML格式顯示時,圖像不顯示。我想要解決這個問題。我正在嘗試這個很長一段時間。任何人都可以幫我嗎?
在此先感謝。
爲你的形象,嘗試表達類
'net.sf.jasperreports.engine.JRRenderable'
和類似的意象表現如下:
net.sf.jasperreports.engine.JRImageRenderer.getInstance("image-dir/report-logo.gif")
在碧玉報告文件(如myreport.jrxml)的表達該圖像將如下所示:
<image scaleImage="Clip" isUsingCache="false">
<reportElement key="image-1" x="0" y="0" width="65" height="47"/>
<imageExpression class="net.sf.jasperreports.engine.JRRenderable"><![CDATA[net.sf.jasperreports.engine.JRImageRenderer.getInstance(image-dir"/report-logo.gif")]]></imageExpression>
</image>
對於Html報告,圖像servlet可能是有用,可在web.xml中配置:
<servlet>
<servlet-name>image</servlet-name>
<servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>image</servlet-name>
<url-pattern>/report/image</url-pattern>
</servlet-mapping>
執行報告的Java/Spring代碼,其中a.o.設置圖像的URI圖像的servlet:
public ModelAndView createReport(HttpSession session, String reportName, String format) {
ApplicationContext context = this.getApplicationContext();
JasperReportsMultiFormatView report = new CollegeJasperReportsMultiFormatView(session);
report.setUrl("/WEB-INF/reports/jasper/" + reportName + ".jasper");
Map<String, Object> model = getModel();
model.put("format", format);
Map parameters = new HashMap();
report.setExporterParameters(parameters);
parameters.put(JRExporterParameter.CHARACTER_ENCODING, "UTF8");
parameters.put(JRHtmlExporterParameter.IMAGES_URI, "../report/image?image=");
parameters.put(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
Properties contentDispositionMappings = new Properties();;
contentDispositionMappings.put(format, "inline; filename=report." + format);
report.setContentDispositionMappings(contentDispositionMappings);
report.setApplicationContext(context); // this will convert the export parameters, so has to be called after setExportParameters()
return new ModelAndView(report, model);
}
嗨markus,我試着用你的代碼..但它不適合我..你可以提供完整的代碼來顯示我的報告在HTML視圖中使用jsp代碼..?在此先感謝 – sowmi
對於html報告,可能需要配置jasper報告的圖像servlet。見編輯的答案。 –
嗨,我用默認的glassfish服務器運行我的jsp應用frm netbeans IDE,所以我的proj文件包含glassfish-web.xml文件。同時我將圖像servlet添加到dat xml文件中顯示錯誤。並再次嘗試創建一個單獨的文件作爲web.xml .. 但dat aso不成功..其顯示d以上錯誤..我可以做.. ..?你可以解釋我嗎?在此先感謝... – sowmi
這是可以生成一個HTML報告,並點爲新的JasperReports庫(我用6.1.0)圖像的servlet的方式,因爲很多老的功能已被棄用:
StringBuffer sbuffer = new StringBuffer();
HtmlExporter exporterHTML = new HtmlExporter();
SimpleExporterInput exporterInput = new SimpleExporterInput(jasperPrint);
exporterHTML.setExporterInput(exporterInput);
SimpleHtmlExporterOutput exporterOutput = new SimpleHtmlExporterOutput(sbuffer);
//pointing to the image servlet
HtmlResourceHandler imageHandler = new WebHtmlResourceHandler(request.getContextPath() + "/servlets/image?" + ImageServlet.IMAGE_NAME_REQUEST_PARAMETER
+ "={0}" + "&uuid=" + UUID.randomUUID().toString());
exporterOutput.setImageHandler(imageHandler);
//setting some sonfigs for the report
SimpleHtmlExporterConfiguration htmlConfig = new SimpleHtmlExporterConfiguration();
SimpleHtmlReportConfiguration htmlReportConfiguration = new SimpleHtmlReportConfiguration();
htmlConfig.setHtmlFooter("");
htmlConfig.setHtmlHeader("");
htmlConfig.setBetweenPagesHtml("");
htmlReportConfiguration.setPageIndex(pageIndex);
exporterHTML.setConfiguration(htmlConfig);
exporterHTML.setExporterOutput(exporterOutput);
exporterHTML.setConfiguration(htmlReportConfiguration);
exporterHTML.exportReport();
你看過生成的HTML的源代碼嗎?圖像路徑可能被錯誤地設置 – CharlesB
我已經看到了圖像路徑,它只顯示錯誤的路徑..但我不知道如何設置..如果我設置了正確的路徑也鏈接到相同的錯誤路徑..我怎麼解決dis ..?在此先感謝 – sowmi