Como enviar array de bytes e transformar para pdf na view?
5 respostas
dambros
Boa tarde,
Criei um sistema que gera pdf como array de bytes e preciso de alguma forma enviar esses arrays ao usuário quando determinada action for realizada, e após o envio renderizar o pdf numa jsp de exibição.
Alguém por favor poderia me ensinar como eu conseguiria fazer esse envio do array para o usuário final sem armazenar nenhuma informação e depois renderizar o pdf para exibição?
Pode ser uma pergunta besta, mas sou novato… no caso teria uma servlet como essa que você especificou, acessando a classe geradora do array de bytes e gerando a exibição do pdf?
drsmachado
Como você está gerando o PDF? E o array de bytes?
Por que se eles forem gerados adequadamente, você consegue fazer o envio sem problemas, apenas mudando o content-type do retorno, para “application/pdf”.
O resto o teu navegador fará pra ti, pois ele irá entender que o que está sendo recebido não é um texto (html) e sim um arquivo a ser interpretado pela extensão/plugin do leitor de PDF (ou, caso não exista, ele irá realizar o download do arquivo).
dambros
drsmachado:
Como você está gerando o PDF? E o array de bytes?
Por que se eles forem gerados adequadamente, você consegue fazer o envio sem problemas, apenas mudando o content-type do retorno, para "application/pdf".
O resto o teu navegador fará pra ti, pois ele irá entender que o que está sendo recebido não é um texto (html) e sim um arquivo a ser interpretado pela extensão/plugin do leitor de PDF (ou, caso não exista, ele irá realizar o download do arquivo).
O Bopepo possui um método chamado "getPdfAsByteArray" que me retorna esse valor.
Com esse tipo de retorno, consigo fazer conforme havia dito?
drsmachado
Perfeitamente.
Aí basta adaptar o seguinte trecho para o que você precisa
//response é o objeto de HttpServletResponse que você recebe no método da Servletresponse.setContentType("application/pdf");response.setContentLength(bytes.length);ServletOutputStreamouputStream=response.getOutputStream();ouputStream.write(bytes,0,bytes.length);ouputStream.flush();ouputStream.close();