贾斯珀报告有时显示空白

时间:2015-04-21 19:27:38

标签: java jasper-reports

我有一个使用Jasper Reports 3.7.6的应用程序,主要是为了向后兼容应用程序的前身(即,之前的应用程序主要用于生成销售证书,但当前的应用程序主要用于生成电子邮件传达相同的信息)。

我的质量检查人员刚刚指出,证书生成功能只会在他的环境中运行时向他显示一个空白网页,这也是我们的开发构建环境的情况。但是当我在本地计算机上运行应用程序时,我会按预期显示PDF文件。一段时间没有看过这个功能,而且从未熟悉过Jasper Reports(这是由多年前离开公司的另一个程序员开发的),我对如何解决看似无法解决的问题感到茫然一个间歇性的问题。

以下是使用Jasper生成销售证书的代码:

    // filePath verified as set to executable's directory
    String fileName = filePath + "/Certificate.jasper";
    String outFileName = "Certificate" + certObject.getSerial() + ".pdf";


    HashMap hm = new HashMap();
    try 
    {
        if(certObject != null)
        {
            ArrayList<Certificate> certList = new ArrayList();
            certList.add(certObject);

            // Create the print object
            JasperPrint print = JasperFillManager.fillReport(fileName, hm, new JRBeanCollectionDataSource( (ArrayList) certList , true));

            // Create a PDF exporter
            JRExporter exporter = new JRPdfExporter();

            // Set the output file name in the HTTP response                            
            response.setHeader("Content-disposition", 
                                    "attachment; filename=" + outFileName);  

            // Set the print object of the exporter, and set its
            // output stream to be that of the HTTP response object
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);                
            ServletOutputStream outStream = response.getOutputStream();
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outStream);

            // Export the PDF file                
            exporter.exportReport();
        }

    } catch (JRException e) 
    {
        e.printStackTrace();
        System.out.println("JRException: "+e.toString());
    } catch (IOException ioe) {
        ioe.printStackTrace();
        System.out.println("IOException: "+ioe.toString());
    } 

我还应该注意,如果内存和子版本日志服务,此功能先前将证书PDF写入可执行文件目录,然后在浏览器窗口中打开该文件。我不记得为什么我改变了功能,除了可能的效率(即,没有用大量的PDF填充该目录)。我是否需要切换回那样做?我真的不想为新应用程序中不太可能使用的东西投入太多精力,所以如果有人能给我一个能够始终如一地工作的简单解决方案,我会非常感激。

1 个答案:

答案 0 :(得分:0)

尝试更改您的servlet以接受GET或更改为Chrome。

我遇到了与IE相同的问题,当用户点击生成PDF按钮IE对Java方法进行POST时,但是当servlet响应PDF输出时,Acrobat插件被加载,这就是第二个帖子但这次是GET,我的控制器没有回应GET提交。