有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

导出html页面时,java图像不会加载到jasper report中

我无法在使用jasper reports导出html时显示图像。我试图从这个论坛中找到不同的解决方案。但我一点运气都没有,我需要去哪里才能错过。我正在分享我的代码

jasper代码:

    <parameter name="IMG_PATH" class="java.lang.String">
        <parameterDescription><![CDATA[]]></parameterDescription>
    </parameter>


<image>
<reportElement uuid="f4c3be1d-ec89-4e22-92c5-e75fbad2bcc5" isPrintRepeatedValues="false" x="567" y="2" width="174" height="56"/>
    <imageExpression><![CDATA[$P{IMG_PATH}+"\\logo.gif"]]></imageExpression>
</image>

Java代码:-

    rptExporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
    rptExporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM, byteArrayOutputStream);
    rptExporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING, "UTF-8"); 
    request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);



    if (reportFrmType.equalsIgnoreCase("HTML")) {


                JRHtmlExporterParameter.CHARACTER_ENCODING, "UTF-8");
        rptExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
                "http://" + request.getServerName() + ":"
                        + request.getServerPort() + ""
                        + request.getContextPath()
                        + "/resources/images/logo.png");

        rptExporter.setParameter(
                JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR,
                Boolean.TRUE);

        rptExporter.setParameter(
                JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
                Boolean.FALSE);


    }

但我无法获得图像并看到谷歌Chrome>;控制台,然后像这样获取图像

<tr valign="top">
  <td colspan="2" style="width: 292px; height: 43px;"></td>
  <td style="width: 4px; height: 43px;"></td>
  <td colspan="2" rowspan="4"><img src="http://localhost:7005/SamplePortal/resources/images/logo.pngimg_0_0_5" style="width: 174px" alt=""></td>
</tr>

当我从谷歌Chrome控制台中删除“img_0_0_5”,然后加载图像时。为什么在src中添加“img_0_0_5”

我尝试了另一种方式,甚至我都无法在chrome浏览器中获取图像并检查控制台

<td colspan="2" rowspan="4"><img src="image?image=img_0_0_5" style="width: 174px" alt=""></td>

下面是共享代码

网络。xml:-

 <servlet>  
    <servlet-name>ImageServlet</servlet-name>  
    <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>  
  </servlet>  

Java代码:-

request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
         Map imagesMap= new HashMap();  
         imagesMap.put("IMG_PATH", "wda-logo.png");
         request.getSession().setAttribute("IMAGES_MAP", imagesMap);

        if (reportFrmType.equalsIgnoreCase("HTML")) {

            rptExporter.setParameter(
                    JRHtmlExporterParameter.CHARACTER_ENCODING, "UTF-8");


             rptExporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP,
                    imagesMap);
             rptExporter.setParameter(
                      JRHtmlExporterParameter.IMAGES_URI, 
                      "image?image=");
            rptExporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME,
                    "test");
            rptExporter.setParameter(
                    JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR,
                    Boolean.TRUE);

            rptExporter.setParameter(
                    JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,


        }

共 (1) 个答案

  1. # 1 楼答案

    我在IMAGES_URI中漏掉了上下文路径,在servlet映射中给出了错误信息。我分享了下面的代码

    if (reportFrmType.equalsIgnoreCase("HTML")) {
    
                rptExporter.setParameter(
                        JRHtmlExporterParameter.CHARACTER_ENCODING, "UTF-8");
    
    
    
                  rptExporter.setParameter(
                          JRHtmlExporterParameter.IMAGES_URI, 
                          "http://" + request.getServerName() + ":"
                            + request.getServerPort() + ""
                            + request.getContextPath()
                            + "/servlets/image?image=");
    
               .....
    
    
            }
    

    还有网络。xml

    <servlet-name>ImageServlet</servlet-name>  
        <url-pattern>/servlets/image</url-pattern>  
        </servlet-mapping> 
    

    谢谢大家的支持