Foros del Web » Programación para mayores de 30 ;) » Java »

Mostrar PDF en navegador

Estas en el tema de Mostrar PDF en navegador en el foro de Java en Foros del Web. Buenas. Estoy diseñando una tienda virtual y me encuentro con el siguiente problema. Cuando se realiza un pedido, el sistema crea un .pdf con la ...
  #1 (permalink)  
Antiguo 03/06/2011, 09:26
 
Fecha de Ingreso: marzo-2011
Mensajes: 20
Antigüedad: 13 años, 1 mes
Puntos: 0
Mostrar PDF en navegador

Buenas. Estoy diseñando una tienda virtual y me encuentro con el siguiente problema.

Cuando se realiza un pedido, el sistema crea un .pdf con la factura/tícket de compra y lo mete en la tabla 'factura' de la base de datos, que tiene un campo BLOB llamado 'doc'.

Ahora, lo que quiero es que cuando un usuario va a la página de su pedido, al hacer click en el hipervínculo "Ver factura" se vea el .pdf en la página. Mi ignorancia del tema de archivos binarios y flujos de datos es suprema, así que estoy teniendo bastantes problemas para deducir cómo seguir. Por el momento lo que he conseguido, a base de robar trocitos de código de distintos sitios, es que al hacer click en el hipervínculo "Ver factura" se descargue el .pdf. He aquí mi código:

try {
Connection conexion = DriverManager.getConnection( CONNECTION_URL );
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM factura WHERE idPedido='" + request.getParameter("id") + "'");
while (rs.next()) {
Blob blob = rs.getBlob(5);
InputStream is = blob.getBinaryStream();
byte[] data = new byte[is.available()];
is.read(data);

response.setContentType("application/pdf;");
response.setHeader("Content-Disposition","attachment;filename=\"" + request.getParameter("id") + ".pdf\";");
response.setContentLength(data.length);
javax.servlet.ServletOutputStream servletoutputstream = response.getOutputStream();

servletoutputstream.write(data);
servletoutputstream.flush();
servletoutputstream.close();
}
rs.close();
s.close();
conexion.close();
} catch (Exception e) {
e.printStackTrace();
}


En resumen, lo que hace ahora al hacer click en el hipervínculo es descargar el .pdf, y lo que deseo que haga es redirigirme a una página en la que se muestra el .pdf

Me da la sensación de que hacer lo que quiero tiene que ser cosa de una o dos líneas más -ya que tengo un flujo de datos con el .pdf en sí, y lo tengo porque efectivamente se descarga correctamente, me extrañaría que no hubiera ninguna forma de plasmar ese flujo en pantalla, usando un PrintWriter o por el estilo-, el problema es que como ya he dicho tengo más bien poca idea del tema y puedo estar contento por poder descargar el fichero a estas alturas, porque me cuesta bastante entender el código.
A ver si alguien que entienda un poquito me puede echar una mano.

Gracias!
  #2 (permalink)  
Antiguo 03/06/2011, 11:17
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Mostrar PDF en navegador

No sé cual es el interés que puede tener lo que quieres hacer, pero no debería hacerse así.

Si generas una información que se guarda en un pdf, ¿por qué querrías mostrar la información por pantalla desde el pdf?. Lo lógico es usar para mostrar en pantalla la misma fuente que la que utilizas para generar el pdf.

Imagina, tienes un CD de música, lo conviertes en MP3 y lo vuelves a pasar a WAV para usarlo en un reproductor. Ilógico, ¿no?

Si lo que quieres es que una vez creado el pdf, el usuario al descargarlo pueda leerlo directamente con el navegador en vez de abrir otro programa, entonces no está en tu mano, eso depende del navegador, plugins y permisos.

Si el problema es que la información fuente es un pdf y tienes que leerlo a narices, prueba a utilizar alguna de estas librerías.

http://java-source.net/open-source/pdf-libraries
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 03/06/2011, 12:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 20
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Mostrar PDF en navegador

A ver, me explico. Cuando se realiza un pedido, el sistema crea un archivo .pdf con la información de la factura, y lo inserta en base de datos como un campo BLOB. Es decir, el .pdf sólo se crea una vez.

Cuando un usuario haga click en 'Ver factura', lo que me gustaría es leer el .pdf que hay en base de datos y mostrarlo como parte de la página web, embedded o como se diga. Ahora mismo, lo que hace es leer el .pdf de base de datos y permitir al usuario la posibilidad de descargarlo. Si no me equivoco
  #4 (permalink)  
Antiguo 28/07/2011, 09:39
 
Fecha de Ingreso: junio-2008
Mensajes: 54
Antigüedad: 15 años, 9 meses
Puntos: 19
De acuerdo Respuesta: Mostrar PDF en navegador

Antrim:

Lo que sugiero es que cuando el usuario solicite ver su pdf, de la BD lo bajes al disco duro de tu Servidor, luego solo colocas una liga al pdf, de esta manera, cuando el usuario le da clic a la liga, se visualiza automaticamente.

En tu jsp puedes poner algo como esto:

Código:
<a href="<% out.println("http://127.0.0.1:8080/pdf/file01.pdf"); %>">Ver pdf</a>

Etiquetas: jsp-servlets, navegador, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:38.