Impressão

To usando o NetBeans…
queria colocar pra imprimir em um botão…
aí da erro pq nao tem o

 throws JRException

teria q ficar assim eu axo

private void SalvarActionPerformed(java.awt.event.ActionEvent evt) throws JRException{

mas nao tem como por … alguem sabe se tem como por …???
vlw :smiley:

uai… ao invez de dar um trows … usa um try catch ()…

eu pus assim nao ta dando …

aqui eh o metodo


   public static void GeraRelat()throws JRException {
        
        repositorioProduto rep = new repositorioProduto();
        JasperPrint relat;
				
		try {
			
			relat = rep.gerar();
			//JasperViewer.viewReport(relat, false);
                        JasperPrintManager.printPage(relat, 0, false);
		} catch (ExcRepositorio e) {
			JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage());
		}
    }

e aqui eh onde eu quero chamar… q ta dando erro …


try{ 
                
            GeraRelat();
            
            } catch (ExcRepositorio e) {
			JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage());
		}

vlw veio

Pra mim funcionou bonito, localmente, quando eu tenho uma impressora padrão.
Mas como fazer no caso de ter que imprimir em uma impressora da rede?

Eu tentei isso, no servidor:

JasperExportManager.exportReportToPdfFile(jasperPrint,nomeArquivo+".pdf");
response.sendRedirect(request.getContextPath() + url+"&nomeArquivo="+nomeArquivo);
JasperPrintManager.printPage(jasperPrint,0,false);

… e obtive essa Exception

15:14:13,606 INFO  [STDOUT] java.awt.print.PrinterException: No print service found.
15:14:13,608 INFO  [STDOUT]     at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1031)
15:14:13,608 INFO  [STDOUT]     at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1011)
15:14:13,608 INFO  [STDOUT]     at net.sf.jasperreports.engine.print.JRPrinterAWT.printPages(JRPrinterAWT.java:193)
15:14:13,608 INFO  [STDOUT]     at net.sf.jasperreports.engine.print.JRPrinterAWT.printPages(JRPrinterAWT.java:88)
15:14:13,609 INFO  [STDOUT]     at net.sf.jasperreports.engine.JasperPrintManager.printPages(JasperPrintManager.java:348)
15:14:13,609 INFO  [STDOUT]     at net.sf.jasperreports.engine.JasperPrintManager.printPage(JasperPrintManager.java:287)
15:14:13,609 INFO  [STDOUT]     at com.acol.util.RelatorioServlet.service(RelatorioServlet.java:159)
15:14:13,609 INFO  [STDOUT]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
15:14:13,609 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
15:14:13,610 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
15:14:13,610 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
15:14:13,610 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
15:14:13,610 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
15:14:13,610 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
15:14:13,610 INFO  [STDOUT]     at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)

Veneno, dah uma olhada nisso:

[code]// o datasource, passando a lista
JRBeanCollectionDataSource dsLista = new JRBeanCollectionDataSource(listaQueVoceQueImprimir);

        // Stream com o .jasper, buscando o arquivo jasper do relatorio
        java.io.File file = new java.io.File("local\arquivo.jasper");
        java.io.FileInputStream in = new java.io.FileInputStream(file);
        
        // Parametros do relatorios - obrigatorio, usado para subrelatorio!
        Map parametros = new HashMap();
        //parametros.put("pathSub","local\arquivo.jasper"); //subrelatorio
        
        if(ver){
            //imprimi na tela
            JasperPrint impressao = JasperFillManager.fillReport(in, parametros, dsLista);
            JasperViewer viewer = new JasperViewer(impressao, false);
            viewer.setVisible(true);
        } else{
            //direto para a impressora
            JasperPrint impressao = JasperFillManager.fillReport(in, parametros, dsLista);
            JasperPrintManager.printReport(impressao,false);
        }[/code]

Lembre-se: IREPORT eh pra impressoras jato de tinta e lasers… matricial nao se usa iReport, tem-se que fazer “na unha”… assim como em impressoras fiscais (argh!!)…

jopss :stuck_out_tongue:

A solução indicada por kpbds_pb usando o JasperPrintManager.printPage() funcionou numa boa! Agradeço por compartilhar informação. :smiley:

tem exemplos no livro desenvolva aplicativos com java 6, da editora erica de renato rodrigues filho.