Abrir pdf em outra abra

3 respostas
Tchello

Bom dia galera!

Então, tenho um sistema feito em JSF 1.2 RI +Facelets+RichFaces 3.3.2 rodando no JBoss 4.2.2.

Em uma determinada ação eu gero dinamicamente um pdf e envio por e-mail pro usuário.
Porém, eu gostaria muito de que também tivesse um botão “visualizar” que abrisse o meu pdf em outra aba, mas não estou tendo muito sucesso.
Coloquei o seguinte código:

<a4j:commandButton  value="#{msg.printBtnPrint}" limitToList="true" reRender="panelMessagesImprimirOrderConsultGUI" ajaxSingle="true"
                                                    action="#{ConsultaPedidoCompraBean.imprimir}" target="_blank" />
public void imprimir() {
         try{
            byte[] bytes = bean.getrelatorio(); //obtem o relatorio pdf em um vetor de bytes

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

            response.setContentType("application/pdf");
            response.setHeader("Content-disposition", "filename=\"Pedido.pdf\"");
            response.setContentLength(bytes.length);
            response.getOutputStream().write(bytes);

            response.getOutputStream().flush();
            FacesContext.getCurrentInstance().renderResponse();
            FacesContext.getCurrentInstance().responseComplete();
        }catch(Exception ex){
     }

}

O que acontece é que ele imprime na mesma tela um monte de caracteres sem noção e na mesma aba, como se o target não tivesse efeito.
Já tenho o Acrobat Reader e o plugin pro firefox instalado na minha máquina.

Alguma sugestão?!

3 Respostas

E

Fala Tchello, blz?

Também já tive problemas quando tentei mostrar um pdf usando servlet…

A solução que encontrei: redirecionar a página para o endereço do pdf.

Como imagino que vc só tenha o pdf em memória, sugiro que salve ele temporariamente na pasta da aplicação e então redirecione.

Até!

Tchello

Inviável cara, se tiver trocentos usuários simutâneos isso pode dar muitos problemas =Z

Mas ignorando isso, como faria pra abrir em outra aba o arquivo em disco?

Abraços!

E

O target é _blank ou _new mesmo. É que a opção de abrir em uma nova aba, a rigor, é setada nas opções do browser e não está (ainda) sob controle do programa.
De qualquer maneira, você pode tentar ver se alguma dessas coisas propostas aqui foram implementadas:
http://www.w3.org/TR/2004/WD-css3-hyperlinks-20040224/

Criado 26 de outubro de 2009
Ultima resposta 26 de out. de 2009
Respostas 3
Participantes 3