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