相关疑难解决方法(0)

Jasper Reports中的图像表达式URL

我想在JasperReports jrxml文件中嵌入一个图像.我有这个目录结构.

Tomcat Root
 webapps
  reports
   -->images
    --> company_logo.jpg
   -->reports
    -->sample.jasper
   -->WEB-INF
    -->classes
Run Code Online (Sandbox Code Playgroud)

我试着这样做,认为这与我的报告上下文根相关

<image>
 <reportElement x="0" y="0" width="104" height="40"/>
 <imageExpression class="java.lang.String">
  <![CDATA["images/company_logo.jpg"]]>
 </imageExpression>
</image>
Run Code Online (Sandbox Code Playgroud)

..这也是

<image>
 <reportElement x="0" y="0" width="104" height="40"/>
 <imageExpression class="java.lang.String">
  <![CDATA["/images/company_logo.jpg"]]>
 </imageExpression>
</image>
Run Code Online (Sandbox Code Playgroud)

但它总是说从位置加载字节时出错JRLoader.

我试过这样做但是有效,但我有点困惑为什么我的前两次尝试没有.

这真的是你在JasperReports中嵌入图像的方式吗?你需要提供整条路径吗?我在想应该有一个页面相对的东西.

<image>
 <reportElement x="0" y="0" width="104" height="40"/>
 <imageExpression class="java.lang.String">
  <![CDATA["http://localhost:8080/reports/images/company_logo.jpg"]]>
 </imageExpression>
</image>
Run Code Online (Sandbox Code Playgroud)

我对正确的方法感到有点困惑.

jasper-reports

22
推荐指数
3
解决办法
6万
查看次数

使用PrintWriter和OutputStream

我正在用struts创建一个项目,我在使用Jasper IReports时遇到了问题.我想将一些信息导出到pdf文件中并且我一直得到java.lang.IllegalStateException:getOutputStream()已被调用...由于在页面已打开PrintWriter时在我的代码中打开ServletOutputStream而导致异常.

代码在模型中(因此它不在jsp中,它在java文件中),如下所示:

    public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
    ServletOutputStream out = null;
    try {

        JasperDesign jasperDesign = JRXmlLoader.load(path);
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection);
        res.setContentType("application/pdf");
        res.setContentLength(bytes.length);
        out = res.getOutputStream();
        out.write(bytes, 0, bytes.length);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        out.flush();
        out.close();
    }
Run Code Online (Sandbox Code Playgroud)

我检查了连接,路径和HttpServletResponse,都运行正常.

我是Jasper Reports的新手以及编写PDF格式的东西,所以你可以 - 正确地 - 我对我在这里做的事情有一点了解,显然我的代码是通过网络从某处复制/粘贴的.

我曾尝试使用PrintWriter而不是OutputStream,将字节转换为String并使用PrintWriter.append(String)方法(allthought不是String是CharSequence),但它不会将数据提取到PDF中.

我也尝试获取PrintWriter,关闭它以打开OutputStream(不起作用)或刷新它(两者都没有).

任何帮助解决方案使用任何可以显示pdf数据的解决方案都会很棒.非常感谢!

java servlets outputstream printwriter

5
推荐指数
1
解决办法
3万
查看次数