2015-04-21 5 views
0

У меня есть приложение, которое использует Jasper Reports 3.7.6, в основном для обратной совместимости с предшественником приложения (т. Е. Предыдущее приложение в основном использовалось для создания сертификатов продажи, но текущее приложение в основном используется для создания электронной почты для передачи той же информации).Отчет Jasper, показывающий пустое место Иногда

Мой персонаж QA только что указал, что функция генерации сертификатов показывает только пустую веб-страницу при работе в его среде, и это также относится к нашей среде разработки. Но когда я запускаю приложение на своем локальном компьютере, я получаю файл PDF, как ожидалось. Не смотря на эту функциональность в то время и никогда не знакомый с Jasper Reports (это было разработано другим программистом, который покинул компанию несколько лет назад), я не понимаю, как разрешить то, что кажется прерывистым вопрос.

Вот код, который использует Джаспера для создания сертификата продаж:

// 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-файлов). Нужно ли мне снова переключиться на такое? Я действительно не хочу вкладывать слишком много усилий в то, что вряд ли можно использовать в новом приложении, поэтому, если кто-то может дать мне простое решение, которое будет работать последовательно, я был бы очень благодарен.

ответ

0

Попробуйте изменить сервлет, чтобы принять GET или перейти на Chrome.

У меня была такая же проблема с IE, когда пользователь нажимает кнопку сгенерированного PDF-файла. IE делает POST для метода Java, но сразу же, когда сервлет отвечает с выходом PDF, загружается плагин Acrobat, что делает второй но на этот раз GET, и мой контроллер не ответил на GET.

+0

Эта проблема, похоже, больше связана с сервером, чем с браузером, поскольку, похоже, не имеет значения, какой браузер используется, но имеет значение, на каком сервере работает приложение. –

Смежные вопросы