диалоговое окно загрузки PDF не отображается в браузере. extjs 4 с Java - PullRequest
1 голос
/ 21 января 2012

Я могу создать отчет в формате PDF с использованием JasperReports и Java.

Сгенерированный отчет недоступен для загрузки на стороне клиента. Я генерирую PDF-файл, используя код ниже:

public void getTaskreportPDF(Session openSession,HttpServletRequest request,HttpServletResponse response) {
        try {   
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/contact","root","root");
Map params = getParameters(openSession);
Date date = new Date();
String reportfileName = "report"+date.getDate()+"-"+date.getMonth()+"-"+date.getYear()+"-"+date.getTime()+".pdf";
JasperDesign jasperDesign = JRXmlLoader.load(this.getClass().getResourceAsStream("/com/gantt/report/ganttreport.jrxml"));
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperprint = JasperFillManager.fillReport(jasperReport, params,con);
JRAbstractExporter exporterPDF = new JRPdfExporter();
exporterPDF.setParameter(JRExporterParameter.JASPER_PRINT, jasperprint);
exporterPDF.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
response.setHeader("Content-Disposition", "inline;filename="+ reportfileName);
response.setContentType("application/pdf");
exporterPDF.exportReport();  
} catch(Exception exception) {
System.out.println("Error occured " +exception.getMessage());
}
}

На моей вкладке firebug net в качестве ответа я получил файл отчета в формате pdf размером 4 КБ. Но проблема в том, что окно загрузки не появляется, поэтому я не могу сохранить его или просмотреть этот отчет.

Мой клоп-шоу показывает:
Content-Disposition inline; имя файла = report21-0-112-1327135412907.pdf Тип контента приложения / pdf

Какая ошибка, из-за которой мое окно загрузки не появляется?

1 Ответ

1 голос
/ 21 января 2012

Используйте attachment вместо inline для заголовка Content-Disposition.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...