Olá amigos,
Estou diante de uma problemática que não consigo resolver, e gostaria de ajuda:
Tenho duas JSPs, sendo que a primeira chama a segunda dentro de um iFrame.
Porém, ao chamar esta segunda, eu passo um parâmetro para pesquisa e nessa pesquisa eu recupero do banco um arquivo pdf em base64, decodo ele numa boa gero o byteArray sem problema e tal, porém ao montar o documento e tentar abrilo a jsp pede para fazer o download do arquivo, e eu nao quero isso, quero que o pdf seja aberto na jsp mesmo, ja dei uma olhada na net e as soluções que encontrei referem-se à Jasper, iReport, etc, gostaria de saber de existe alguma maneira direta de fazer isso…
Deve ser uma questão trivial… mas agradeceria qlq ajuda.
Att
Calazans
Pdf + jsp
6 Respostas
Aí camarada, a opção de pesquisa do guj sempre funciona.
Dá uma olhada aí http://www.guj.com.br/java/55341-abrir-pdf-no-browser-via-servlet
Amigo, que a opção de pesquisa funciona eu sei, tanto que esse tópico aí eu ja visitei e tirei algumas duvidas pelo código do andrerios.
Porém ainda não resolveu 100% meu problema. A questão é que continua continua mandando fazer o download do pdf montado e eu não tenho mais ideia do que pode ser, o código está exatamente igual ao do andrerios inclusive.
Isso poderia estar acontecendo por eu estar usando GlassFish?! Sei la…
Att
Amigo, que a opção de pesquisa funciona eu sei, tanto que esse tópico aí eu ja visitei e tirei algumas duvidas pelo código do andrerios.
Porém ainda não resolveu 100% meu problema. A questão é que continua continua mandando fazer o download do pdf montado e eu não tenho mais ideia do que pode ser, o código está exatamente igual ao do andrerios inclusive.
Isso poderia estar acontecendo por eu estar usando GlassFish?! Sei la…Att
Cara, sem ver teu código, não sei como está fazendo. Mas uma dica é tentar com um outro navegador, por exemplo o google chrome, ele abre pdf direto no browser, basta você direcionar o caminho na url que ele abre. Talvez o seu navegador não tem suporte para abrir PDF por isso ele pede para fazer o download.
Olá amigo, tive um problema semelhante e como o esdras_63 disse pode ser o navegador, no meu caso era o firefox, que no menu opções -> tipo de arquivo estava configurado pra fazer download de arquivos pdf em vez de abrir com o Acrobat.
wendelguedes… interessante, vou observar esse detalhe…
Vou tentar explicar melhor meu problema exibindo cógio… acho que será melhor…
index.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Index</title>
<script type="text/javascript" src="jQuery-1.7.1.js"></script>
<script>
var pdfObject;
function loadPdf(id){
try{
$('#pdfFrame').attr("src","arquivoPDF.jsp?id="+id);
$('#pdfFrame').ready(
$('#pdfFrame').load( function(){
imprimePdf();
})
);
}catch(e){
alert("Erro ao carregar pdf\n\n"+e);
}
}
function imprimePdf(){
try{
frames["pdfFrame"].print();
}catch(e){
alert("Erro ao imprimir pdf");
}
}
</script>
</head>
<body>
<object
<!-- tenho dentro deste object uma aplicação Flex que apenas passa a id para o metodo loadPdf por ExternalInterface -->
</object>
<iframe id="pdfFrame" style="visibility: hidden;">
</iframe>
</body>
</html>
arquivoPDF.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="sun.misc.BASE64Decoder"%>
<%@page import="XXX"%>
<%
BASE64Decoder decoder = new BASE64Decoder();
String id = request.getParameter("id");
Arquivo arq = new Arquivo();
arq.b64 = PesquisaArquivo.pesquisaPorId(id);
byte[] bytes = decoder.decodeBuffer(arq.b64);
response.setContentType("application/pdf");
try{
DataOutputStream dataOutput = new DataOutputStream(response.getOutputStream());
response.setContentLength(bytes.length);
for(int i = 0; i < bytes.length; i++){
dataOutput.writeByte(bytes[i]);
}
}catch(Exception ex){
System.out.println("Erro: "+ex.getMessage());
}
%>
O código está simplificado, mas acho que nao vai gerar duvida a cerca da funcionalidade em questão…
Sei que a classe BASE64Decoder do pacote sun.misc já não é mais interessante ser usada mas neste contexto não é um problema…
Quero apenas montar esse pdf e deixado escondido nesse iframe do index, tem como fazer isso num tem? 
att
Calazans
Bom, ainda não ficou 100% mas, até agora, no que consegui concluir é que o wendelguedes está correto, meu problema é diretamente relacionado com o navegador em uso.
Se tiver alguma novidade… reporto… 
Att