Sou um programador iniciante no JAVA, geralmente tiro minhas dúvidas no Java Básico, mas essa “eu acho” que é um pouco mais complexa.
Estou gerando um relatório em PDF usando o iText. Neste meu servlet estou gravando um arquivo, mas não é isso que eu preciso. Eu não quero gravar o arquivo, na verdade eu pretendo abrir o Acrobat Reader no browser, com o relatório gerado, e permitir que o visitante do meu site decida se deseja grava-lo ou imprimi-lo diretamente do seu micro.
Alguém pode me enviar um exemplo de como eu consigo fazer isso.
Estou pedindo um exemplo, porque como disse anteriormente, sou iniciante :oops: e um exemplo sempre me ajuda muito. Caso não seja possível enviar o exemplo, uma dica já ajuda muito.
nao precisa ter criado um outro topico… as vezes demora, mas o pessoal geralmente responde… O mesmo topico em varios lugares dificulta a manutencao do forum…
Bom, em relacao a tua pergunta, eh mais ou menos assim:
Para setar o content-type, vc usa o metodo setContentType() da classe HttpServletResponse… por exemplo
Geralmente eh usado um PrintWriter para mandar caracteres para o browser… No teu caso, como eh binario, voce tem que usar um lance um pouco diferente… Eis um exemplo:
response.setContentType("application/pdf");FileInputStreamfi=newFileInputStream("d:/seila.pdf");byte[] b = new byte[2048];intc=0;while((c = fi.read(b)) != -1) {response.getOutputStream().write(b);}fi.close();
Nao testei, mas deve funcionar…
Rafael
cancao
Rafael, não funciona por um simples motivo: para cada response o getOutputStream só pode ser invocado uma unica vez! O mesmo vale para o getWriter ou para uma combinação de ambos. Então, basta alterar um pequeno trecho do seu codigo para que fique assim:
byte[] b = new byte[2048];intc=0;java.io.OutputStreamout=response.getOutputStream();while((c = fi.read(b)) != -1) {out.write(b);}
Enfim, basta tirar o response.getOutputStream() de dentro do while.
Até.
Rafael_Steil
“cancao”:
Rafael, não funciona por um simples motivo: para cada response o getOutputStream só pode ser invocado uma unica vez!
Em um servlet tudo bem, mas se vc jogar todo o codigo em um .jsp, vera que funciona
Rafael
cancao
“Rafael Steil”:
Em um servlet tudo bem, mas se vc jogar todo o codigo em um .jsp, vera que funciona
Rafael
Usando o response.getOutputStream()?! E por que essa diferença já que uma jsp é um servlet?! Fiquei sem entender agora. :roll: