Baixar pdf por servlet

13 respostas
CristianPalmaSola10

Galera tenho uma servlet que recebe parametros e faz a geração de boletos bancarios ate ai tudo blz, mas na hora da servlet dar uma resposta, minha intenção é abrir o pdf na tela, so que no ie 8 não funciona, em todos os demais funciona corretamente, coloco a url do meu servlet com todos os parametos preciono enter no browser a tela fica em branco so quando preciono novamente enter na url é que o negocio funciona, a requisição sempre chega na minha servlet, penso que seja alguma coisa com o ie 8, alguem saberia o que posso fazer para resolver este problema?

Obrigado pela ajuda de todos

13 Respostas

mauricioadl

cara, eu faço e funciona normal. como vc ta mandando o pdf pro navegador?

CristianPalmaSola10
response.setContentType("application/pdf");
		response.setHeader("Content-Disposition", "inline; filename=boleto.pdf");
CristianPalmaSola10
try {
			stream = response.getOutputStream();
			buf = new BufferedInputStream(new ByteArrayInputStream(BoletoViewer.groupInOnePDF(listBoleto)));
			
			int readBytes = 0;

			while ((readBytes = buf.read()) != -1)
			{
				stream.write(readBytes);
			}
			
			stream.flush();

		} catch (Exception e) {
			e.printStackTrace();
		}
mauricioadl

ve se resolve:

response.setContentType(“application/pdf;name=SEU_ARQUIVO.pdf”);
response.setContentLength(seu_array_de_bytes.length);

CristianPalmaSola10

ficou assim mas nao funcionou

try {
			stream = response.getOutputStream();
			buf = new BufferedInputStream(new ByteArrayInputStream(BoletoViewer.groupInOnePDF(listBoleto)));
			
			response.setContentLength(buf.available());
			
			int readBytes = 0;

			while ((readBytes = buf.read()) != -1)
			{
				stream.write(readBytes);
			}
			
			stream.flush();

		} catch (Exception e) {
			e.printStackTrace();
		}
mauricioadl

e esse?
response.setContentType(“application/pdf;name=SEU_ARQUIVO.pdf”);
colocou tbm?

CristianPalmaSola10

Sim coloquei tambem, sem sucesso, sera que existe alguma outra coisa que possa ser tentada ja pesquisei bastante e nao consegui encontrar nada que realmente funcione ate agora, mas alguma ideia?

mauricioadl

cara, eu tinha um problema de consumo de memoria quando gerava pdf, entao passei a usar renderização em arquivo.
hoje eu gero o pdf dentro da pasta web e devolvo o link para o navegador, alem de ficar mais rapido, o codigo eh mais simples.
o problema eh que vc tem que criar um filtro de pdf para ninguem acessar o arquivo do outro e depois precisa apagar os pdfs.

[]'s

CristianPalmaSola10

Pode me passa o codigo de como vc fez isso, naum sei se vai se adequar, no meu casso o cliente entra no site da empresa e aciona reimpressao de boleto bancario, e teria que gerar esse boleto, essa parte esta ok, mas o problema é mostrar o boleto no site que não esta acontecendo.

mauricioadl

eh bem simples:

RequestDispatcher rd = request.getRequestDispatcher(“seu_arquivo.pdf”);
rd.forward(request, response);

CristianPalmaSola10

Ai entaum eu tenho quer ter criado ja o pdf dentro do server, ou em algum lugar e passar o pdf, um array de bytes ou ByteArrayOutputStream nao serve?

CristianPalmaSola10

Consegui resolver, fiz um javascript dentro do html que eu tinha criado para abrir o pdf mudando o location do browser no onload, ai o internet explorer (que na minha opiniao so server pra baixar o google chrome, mas infelizmente os clientes usam) conseguiu renderizar o pdf de primeira

mauricioadl

kkkk IE eh um lixo mesmo!

coloca o código pra da solucao de outras pessoas.

abração

Criado 16 de abril de 2012
Ultima resposta 17 de abr. de 2012
Respostas 13
Participantes 2