【问题标题】:JasperReports Prints Empty PDFJasperReports 打印空 PDF
【发布时间】:2012-02-04 07:11:05
【问题描述】:

我正在尝试使用 JasperReports 和 java servlet 从数据库中的数据生成 pdf 文件。我第一次使用数据库中的数据成功生成了一个 pdf 文件。然后我在我的数据库表中进行了一些更改并重新创建了jrxml 文件并使用该jrxml 文件创建了一个jasper 文件。但是现在当我尝试生成pdf时,pdf文件总是空的。

我的 Servlet 中的代码

response.setContentType("application/pdf");
try {

    HttpSession hs = request.getSession();
    String id = (String) hs.getAttribute("id");

    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/exam", "root", "pass");
    Statement statement = con.createStatement();
    ResultSet resultSet = statement.executeQuery 
            ("SELECT marks, date_time FROM result where sub_id = 1  and user_id = 3");

    ServletOutputStream set = response.getOutputStream();
    InputStream re = getServletConfig().getServletContext().getResourceAsStream("./results.jasper");
    JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(resultSet);
    JasperRunManager.runReportToPdfStream(re,set, new HashMap(), resultSetDataSource);

} catch (Exception e) {

}

我该如何解决这个问题?

【问题讨论】:

  • @AndrewThompson NullPointerException 下一行JasperRunManager.runReportToPdfStream(re,set, new HashMap(), resultSetDataSource);
  • OK.. 那么resetresultSetDataSource 中的哪一个是null
  • @AndrewThompson 我发现了错误。我原来的.jasper文件名是Results.jasper。但在我的代码中,我将其命名为results.jasper。我纠正了它。现在堆栈跟踪上没有任何错误打印。但是当我运行 servlet 时,不会生成 pdf 文件。
  • @AndrewThompson 现在我已经创建了新项目并编写了一个 servlet 并运行该项目。然后生成pdf文件。所以我再次运行我以前的项目。现在它可以正常工作了。它还生成了一个pdf文件。
  • 好的。很高兴你把事情解决了。 :) 我添加了我的建议。堆栈跟踪作为答案(我认为它会以一种或另一种方式帮助解决问题)。

标签: java jsp servlets jasper-reports


【解决方案1】:

将每个catch 更改为

...
} catch (Exception e) { 
    e.printStackTrace(); 
}

这将提供问题的详细信息,以及哪里出了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多