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
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
[quote=WBCalazans]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[/quote]
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