Exibindo arquivo pdf no browser
28/01/2013 18:29
0
Olá pessoal,

to usando o seguinte método


def readFromFile = {

def openAgain = new File(params.id+".pdf")

response.setHeader("Content-disposition", "filename=documentos/teste.pdf")

response.outputStream << openAgain.getBytes()
response.outputStream.flush()
retur


e no gsp está assim:

<g:link controller="documento" action="readFromFile" id="${doc.path}"
target="_blank">Arquivo</g:link>



o meu valor path é uma string "documentos/1" exatamente isso e quando tento abrir o pdf ele me traz uma tela toda em branco com esse valor no browser:


http://localhost:8080/Gerdoc/documento/readFromFile/documentos%2F1


Obs: quando eu uso a palavra documentos estaticamente dentro do metodo readFromFile ele funciona normalmente.

Alguem poderia me ajudar a saber oque está acontecendo?

Att.
Tags: exibir pdf


0
Errata: o método é este


def readFromFile = {

def openAgain = new File(params.id+".pdf")

response.setHeader("Content-disposition", "filename=documentos/teste.pdf")

response.outputStream << openAgain.getBytes()
response.outputStream.flush()
return
}

28/01/2013 18:30


0
Oi Fabiano!

Experimente retirar o "documentos/" no filename do setHeader. A principio o filename deve ter somente o nome do arquivo que vai aparecer pro usuario baixar.

Também adicione o header "Content-Type" com o valor "application/pdf" para funcionar em todos os browsers. Provavelmente o browser que vc está usando mais moderno está detectando o tipo de arquivo pela extensão.

Abraço!


0
obrigado pela dica do "application/pdf" Wanderson, mas com relação ao diretório, eu realmente tenho vários diretórios diferentes e preciso carregar eles através da minha tabela no banco de dados... Alguma sugestão?
28/01/2013 23:33


0
Consegui com:

params="[p:doc.path]

ao invés de:

id=${doc.path}
29/01/2013 01:56


0
Legal!

Mas saiba que o 'filename' é simplesmente para determinar o nome do arquivo que vai aparecer para o usuário quando ele salvar o pdf.

Se você precisa acessar um pdf em algum diretorio diferente, você deve passa isso para o objeto File instanciado.

Abs!


1
Legal, isso eu também não sabia.

Obrigado, agora todos os problemas foram resolvidos. =)
29/01/2013 16:41



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto