Imprimindo diretamente para Impressora iReport

04/11/2009

0

 Bom dia,


 Tenho uma aplicação web que precisa imprimir um etiqueta direto para impressora, no sistema realizo a consulta normalmente e mostro na tela o resultado, mas o código que estou utilizando abaixo imprime no servidor e nao na máquina do Cliente.
Exite um código comentado na função abaixo que funciona mas eu teria que mostrar na tela com um PDF, sendo que eu preciso que imprima direto na impressora local do cliente e nao no Servidor.


Segue codigo utilizado para a chamada da impressão:

    @SuppressWarnings("unchecked")
    //executa o relatório através do actionListener
    public void executarEtiqueta() throws IOException, java.text.ParseException, ParseException {

        todosResultsPesq();
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

        //pega o caminho do arquivo .jasper da aplicação
        InputStream reportStream = context.getExternalContext().getResourceAsStream("/reporter/etiquetas/EtiquetaEndereco.jasper");

            //envia a resposta com o MIME Type PDF
         //   response.setContentType("application/pdf");
            /*for�a a abertura de download */
          //  response.setHeader("Content-disposition",
            //       "attachment;filename=relatorio.pdf");

        try {
            ServletOutputStream servletOutputStream = response.getOutputStream();

            //envia o título para o relatório, usando o parâmetro criado
            Map<String, String> parametros = new HashMap<String, String>();
            parametros.put("fornecimento", "xxxx");

            List dados = new ArrayList();

            Map record = null;

            //varre a consulta e separa os objetos

            for (Iterator iterator = todosResultsPesq().iterator();
                    iterator.hasNext();) {

                Object[] o = (Object[]) iterator.next();
                record = new HashMap();
                //coloca em um Map cada um dos campos criados
                //manualmente pelo relatório

                record.put("fornecimento", o[0].toString());
                record.put("isrisco", Boolean.parseBoolean(o[1].toString()));
                record.put("endereco_entrega", o[2].toString());
                record.put("nome_cliente", o[3].toString());
                record.put("endereco", o[4].toString());
                record.put("bairro", o[5].toString());
                record.put("cidade", o[6].toString());
                record.put("cep", o[7].toString());
                record.put("observacao_entrega", o[8].toString());
                record.put("num_notafiscal", Integer.parseInt(o[9].toString()));
                record.put("data_nf", this.convertTimestamp(o[10].toString()));

                //adiciona o List dados
                dados.add(record);


            }


            //cria uma fonte de dados para cole��es
            JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);
         //envia para o navegador o PDF gerado
         //   JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
           

               JasperPrint print = JasperFillManager.fillReport(reportStream, parametros, fonteDados);

                JasperPrintManager.printPage(print, 0, false);


            servletOutputStream.flush();
            servletOutputStream.close();





        } catch (JRException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            //evita erro do JSF após completar
            //a geração do relatório
            //avisando o FacesContext que a resposta está completa
            context.responseComplete();

        }

    }
Victor Lima

Victor Lima

Responder

Posts

04/11/2009

Dyego Carmo

É impossivel imprimir diretamente em um browser , voce terá que gerar um PDF e enviar para o usuario imprimir...

Se voce quiser imprimir diretamente vai precisar criar ou uma APPLET ou um ACTIVEX para acessar a porta diretamente do PC e mandar as informacoes !

Responder

04/11/2009

Victor Lima

Boa Tarde.


 Voce poderia me mostrar os caminhos das pedras.


obrigado

Victor
Responder

04/11/2009

Victor Lima

Boa Tarde,


 tem alguma forma de que eu possa enviar o PDF direto para impressora ?


obrigado


Responder

09/11/2009

Dyego Carmo

Via web isso nao eh possivel...

Voce vai enviar ao browser o PDF e ele vai abrir via acrobat plugin , tendo que o usuario apertar o botao de "IMPRIMIR"...


Responder

09/11/2009

Andrei Hirata

Olá Victor.Quanto tempo hein... Acho que tenho uma solução para vc   1.Criar uma impressora virtual PDF.. assim seu sistema ao imprimir ele vai gerar o pdf para vc SEM NENHUM CODIGO Extra.   ouuuuuuuuuuuuuuuuu   2.Isto aqui que me ajudou muito   http://itextdocs.lowagie.com/tutorial/general/webapp/index.php#silentprint
Responder

09/11/2009

Victor Lima



 Boa Tarde.


 O que preciso é que o usuario utilizando um leitora de  codigo de barra onde a maquina nao tem mouse somente teclado e leitora realizasse uma leitura de um código de barra em um campo texto e ao sair do campo automaticamente enviar para impressora onde gera a etiqueta.
Tem que ser dinamico pois o usuario não faz somente 1 mas uma pancada de consulta, colocar para ele clicar vai atrasar porque ele consulta com a leitora e se parar para clicar para imprimir vai atrasar, porque sao 3 cliques.  Um para o botao imprimir, outro para mandar imprimir e outro para fechar a tela do pdf.





 obrigado.

Victor
Responder

09/11/2009

Andrei Hirata

Bom.Eu já cheguei a fazer assim   -Pega os valores da venda e armazena no banco e ao mesmo tempo grave em um arquivo.pdf em uma pasta -Depois abro o arquivo pdf e dou o comando print. -Depois fecho o arquivo -depois deleto ou movo para outra pasta     TUDO isto é feito automaticamente.tenho 1 sistema que detecta a entrada do arquivo pdf na pasta, le o arquivo e faz tudo isto..é isto que vc quer?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar