Array
(
)

Imprimindo diretamente para Impressora iReport

Victor Lima
   - 04 nov 2009

 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();

        }

    }

Dyego Carmo
   - 04 nov 2009

É 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 !

0
|
0

Victor Lima
   - 04 nov 2009

Boa Tarde.

 Voce poderia me mostrar os caminhos das pedras.

obrigado

Victor

0
|
0

Victor Lima
   - 04 nov 2009

Boa Tarde,

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

obrigado

0
|
0

Dyego Carmo
   - 09 nov 2009

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"...

0
|
0

Andrei Hirata
   - 09 nov 2009

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

0
|
0

Victor Lima
   - 09 nov 2009



 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

0
|
0

Andrei Hirata
   - 09 nov 2009

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?

0
|
0