У меня есть Веб приложение, которое производит одну, я храню в архиве .pdf к диску и также хочу призвать показывать это в browser прямо. Прокрути изображение в окне в Wildfly 9 и у процесса произвождения файла к диску нет проблем, но захотев показать это в браузере, не показывает и также меня не бросает ошибка, их скопировал код, чтобы производить сохранил в архиве их, провел одну неделю пытаясь всего и нет случая, и ранее к тому же самому в JBOSS AS7 и оно функционировало без драмы.
public void testBuildPdf1() {
final String REPORT_PATH= "C:\\tools\\prueba.pdf";
FacesContext facesContext=FacesContext.getCurrentInstance();
String report=facesContext.getExternalContext().getRealPath("reportes//rptExtracto.jasper");
String logoCabeza=facesContext.getExternalContext().getRealPath("imagenes//logoCabeza.jpg");
JRBeanCollectionDataSource datosRubro= this.getFuncionario();
try {
Map<String, Object> params = new HashMap<String, Object>();
params.put("LogoCGR", logoCabeza);
HttpServletResponse response= (HttpServletResponse)facesContext.getExternalContext().getResponse();
// JasperReport reportCompile= JasperCompileManager.compileReport(report);
JasperPrint jasperPrint = JasperFillManager.fillReport(report, params, datosRubro);
//genera el pdf en disco
JasperExportManager.exportReportToPdfFile(jasperPrint, REPORT_PATH);
//send to the browser
byte[] reportToPdf= JasperExportManager.exportReportToPdf(jasperPrint);
response.setContentType("application/pdf");
response.setContentLength(reportToPdf.length);
response.setHeader("Content-Disposition","attachment; filename="+ report + ".pdf");
ServletOutputStream out = response.getOutputStream();
out.write(reportToPdf);
facesContext.responseComplete();
out.flush();
out.close();
} catch (Exception e) {
System.out.println("ERROR AL EXPORTAR!!");
}
}
public JRBeanCollectionDataSource getFuncionario(){
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("codigoFuncionario",this.idFuncionario);
parametros.put("anio", 2018);
parametros.put("mes", 7);
List<AdmFuncionarioDTO> listaFun=funcionarioService.listar(0,-1, "f.id", "ASC", parametros).getLista();
for (AdmFuncionarioDTO f: listaFun){
System.out.println("NOMBRE: "+f.getNombre());
for(GenMovimientoSalarialDTO m : f.getListaMovimientos()) {
System.out.println("MONTO: "+ m.getMovimientoImporte());
System.out.println("MONTO: "+ m.getMovimientoDescripcion());
}
}
это зависимости от моего POM: javax.servlet servlet-api 2.5 provided
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<dependency>
<groupId>py.gov.cgr</groupId>
<artifactId>rrhh-extracto</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- SPRING FRAMEWORK -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-binding</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-faces</artifactId>
<version>2.4.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-webflow</artifactId>
<version>2.4.1.RELEASE</version>
</dependency>
<!-- SPRING SECURITY FRAMEWORK -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.2.5.RELEASE</version>
</dependency>
<!-- REPORTES -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml/jaxp-api -->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxp-api</artifactId>
<version>1.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-digester3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-digester3</artifactId>
<version>3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-pdfa -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-pdfa</artifactId>
<version>5.5.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.5.1</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
Попробуй делать ты mГ©todo следующего способа:
public void testBuildPdf1() {
final String REPORT_PATH = "C:\\tools\\prueba.pdf";
FacesContext facesContext = FacesContext.getCurrentInstance();
String report = facesContext.getExternalContext().getRealPath("reportes//rptExtracto.jasper");
String logoCabeza = facesContext.getExternalContext().getRealPath("imagenes//logoCabeza.jpg");
JRBeanCollectionDataSource datosRubro = this.getFuncionario();
try {
Map<String, Object> params = new HashMap<String, Object>();
params.put("LogoCGR", logoCabeza);
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
JasperPrint jasperPrint = JasperFillManager.fillReport(report, params, datosRubro);
// Mostrando el documento
HttpServletResponse httpServletResponse = null;
httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.addHeader("Content-disposition", "inline; filename=" + report + ".pdf");
httpServletResponse.setContentType("application/pdf; name='" + report + ".pdf'");
ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
System.out.println("ERROR AL EXPORTAR!!");
}
}
Я Думаю, что это тебе нужно, он то response
servlet
.