PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Enviar pdf jasper diretamente para impressora. #536368

04/11/2015

0

Tenho uma classe para gerar um pdf usando jasper reports, dá maneira atual ela delega ao navegador a impressão e os usuários podem imprimir quantas cópias quiserem.
Acontece que em meu atual cenário a impressão deve ser única, o relatório sempre tem uma só página.
Atualmente está assim:

public class UtilRelatorios {
		
	public static void imprimeRelatorio(String relatorioNome,
			HashMap parametros) throws IOException, JRException {
		    FacesContext fc = FacesContext.getCurrentInstance();
	        ServletContext context = (ServletContext) fc.getExternalContext().getContext();
	        HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
	        JasperPrint jasperPrint = 
					JasperFillManager.fillReport(
							context.getRealPath("/relatorios")+ File.separator+relatorioNome+".jasper",
							parametros);	

	        byte[] b = null;
	 
	        try {
	        	b = JasperExportManager.exportReportToPdf(jasperPrint);
	        	
	        } catch (Exception e) {
	            e.printStackTrace();
	        } finally {
	        }    
	        	       
	            if (b != null && b.length > 0) {
	            	// Envia o relatório em formato PDF para o browser
	            	response.setContentType("application/pdf");
	            	int codigo = (int) (Math.random()*1000);
	    			response.setHeader("Content-disposition","inline);filename=relatorio_"+codigo+".pdf");
	            	response.setContentLength(b.length);
	            	ServletOutputStream ouputStream = response.getOutputStream();
	            	ouputStream.write(b, 0, b.length);
	            	ouputStream.flush();
	            	ouputStream.close();
	            }	
     }
}





Tentei com o trecho abaixo mas dá o erro: Invalid page index range : 1 - 1 of 1

          int finalPag = jasperPrint.getPages().size();
	  System.out.println("page: "+finalPag);
	  JasperPrintManager.printPage(jasperPrint,finalPag,false);
Cássia Freitas

Cássia Freitas

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar