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

cargar pdf desde jsp

Estas en el tema de cargar pdf desde jsp en el foro de Java en Foros del Web. hola!! mi duda es parecida a una que vi de un documento word, pero no entendi muy bien lo que se propuso. Lo que yo ...
  #1 (permalink)  
Antiguo 22/05/2007, 04:32
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
cargar pdf desde jsp

hola!!

mi duda es parecida a una que vi de un documento word, pero no entendi muy bien lo que se propuso. Lo que yo quiero es que desde un pagina jsp se pueda cargar un pdf, tendre unos cuantos pdf y el usuario elegira cual ver mediante el nombre del pdf. hasta ahora lo tengo hecho con un hipervinculo pero cuando lo cargo me sle directamente la descarga(firefox) y yo quiero que se cargue directamente y no tener que dar a descargar

sabeis como puedo solucionarlo?

gracias
  #2 (permalink)  
Antiguo 22/05/2007, 08:59
 
Fecha de Ingreso: diciembre-2005
Ubicación: Madrid, España
Mensajes: 154
Antigüedad: 18 años, 4 meses
Puntos: 2
Re: cargar pdf desde jsp

Si no recuerdo mal es mejor no mandarlo desde el jsp, sino directamente desde el servlet.
Cuando el JSP empieza a enchufar datos, los hace en formato ASCII. El PDF es un formato binario no ascii...

Yo dejaría que se lo descargara directamente, te va a suponer menos problemas.

Saludos
  #3 (permalink)  
Antiguo 22/05/2007, 09:03
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

Usa el objeto response de la jsp para cambiar el tipo a pdf, asi se abrira con el acrobat.

response.setContentType("application/pdf;");

Obtienes el fichero como un array de bytes, por ejemplo, y se lo encasquetas al servletouputstream del response.

Saludos.
  #4 (permalink)  
Antiguo 22/05/2007, 09:14
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

Cita:
Iniciado por radian Ver Mensaje
Si no recuerdo mal es mejor no mandarlo desde el jsp, sino directamente desde el servlet.
Cuando el JSP empieza a enchufar datos, los hace en formato ASCII. El PDF es un formato binario no ascii...

Yo dejaría que se lo descargara directamente, te va a suponer menos problemas.

Saludos

Que diferencia hay entre una jsp y un servlet?? porque aparte de la capa de presentacion, que en jsp va encapsulada y el los servlets en un poco mas trabajosa, no le veo ninguna.

La jsp surgio a raiz del servlet, porque en estos la capa de presentacion, usease, el codigo html que va entre medias es un peñazo.

Evoluciono a partir del servlet, y es de por si, un servlet.

Saludos.
  #5 (permalink)  
Antiguo 22/05/2007, 09:33
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: cargar pdf desde jsp

Cita:
Iniciado por elAntonie Ver Mensaje
Usa el objeto response de la jsp para cambiar el tipo a pdf, asi se abrira con el acrobat.

response.setContentType("application/pdf;");

Obtienes el fichero como un array de bytes, por ejemplo, y se lo encasquetas al servletouputstream del response.

Saludos.
no entendi lo ultimo de servletoutputstream
  #6 (permalink)  
Antiguo 22/05/2007, 10:29
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

ServletOutputStream servletoutputstream = response.getOutputStream();


obtienes el stream y le encasquetas el array de bytes con el metodo write.

Que es lo que no entiendes??
  #7 (permalink)  
Antiguo 22/05/2007, 10:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: cargar pdf desde jsp

Si es una JSP, lo mejor es utilizar la directiva @page que te permite especificar un content type y se asegura que se ejecute antes de enviar ningun contenido por el stream.

La razon por la que es "mejor" usar servlets en vez de JSP para esas cosas, es por que los JSP estan pensandos para generar HTML y en este tipo de cosas en la JSP no generas nada, y en cambio tienes los problemas de que si generas algo te da problemas el Stream, como en este caso. Pero vamos, sabiendo lo que haces se pueden usar cualquiera de los dos.

S!
  #8 (permalink)  
Antiguo 23/05/2007, 04:32
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

o usar el metodo setcontenttype del objeto response.

Que diferencia hay con usar la directiva page??
  #9 (permalink)  
Antiguo 23/05/2007, 05:37
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: cargar pdf desde jsp

Cita:
la directiva @page que te permite especificar un content type y se asegura que se ejecute antes de enviar ningun contenido por el stream.
  #10 (permalink)  
Antiguo 24/05/2007, 02:48
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: cargar pdf desde jsp

hola!!

He estado mirando lo que me habeis dicho del contentType(nunca lo habia oido) y por lo que he visto intuyo que lo que hace es interpretar el texto de la pagina jsp y ponerlo en el "formato" indicado en contentType, es mas o menos asi?
si es asi entonces no se de que forma me ayuda, porque ¿tendria que leer todo el documento pdf y volcarlo en la pagina y que luego se ahi se interpretase?

no se a lo mejor me he confundido y no lo he entendido bien
  #11 (permalink)  
Antiguo 24/05/2007, 03:47
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

Cita:
Iniciado por cris_maco Ver Mensaje
hola!!

He estado mirando lo que me habeis dicho del contentType(nunca lo habia oido) y por lo que he visto intuyo que lo que hace es interpretar el texto de la pagina jsp y ponerlo en el "formato" indicado en contentType, es mas o menos asi?
si es asi entonces no se de que forma me ayuda, porque ¿tendria que leer todo el documento pdf y volcarlo en la pagina y que luego se ahi se interpretase?

no se a lo mejor me he confundido y no lo he entendido bien
Exacto.

Y si tendrias que leer el pdf y volcarlo, bueno tu no, la jsp. Se vuelca el contenido de la jsp, se interpreta que es un pdf y se abre con el acrobat.

No es eso lo que querias??
  #12 (permalink)  
Antiguo 24/05/2007, 05:11
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: cargar pdf desde jsp

me reorganice e hice la lectura pero cuando lo ejecuto intenta descargarse como una pagina jsp . Lo hago asi y creo que hago mas o menos lo que me deciais
<%@ page language="java" pageEncoding="ISO-8859-1" import ="java.io.*" contentType="application/pdf;"%>
<%
String texto = new String();

FileReader f = new FileReader("C:/Documents and Settings/Cristin/workspace/proyecto/WebRoot/fotos/SolicitudIdiomasIN.pdf");
BufferedReader entrada = new BufferedReader(f);
String s;
while((s = entrada.readLine()) != null)
texto += s;
entrada.close();

%>

<body>
<%=texto %>
</body>
  #13 (permalink)  
Antiguo 24/05/2007, 06:18
 
Fecha de Ingreso: mayo-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Re: cargar pdf desde jsp

El codigo anterior esta mal, no funcionara para todos los pdf.

No puedes usar una jsp para devolver binarios, no es posible por mucho que te empeñes y muchas cosas que hagas.

Una JSP escribe siempre en un writer, no en un outputstream, ello quiere decir que siempre intentara transformar los bits que escribas al enconding seleccionado.

Usa servlets, no hay otra solucion, sino lo haces pues no te funcionara hagas lo que hagas. Puede que algun pdf se vea por no tener ninguna secuencia de bits que de error pero alguno fallara.

Si no entiendes las lineas anteriores usa la fe, ya que los encodings suelen ser un tema avanzado y la diferencia entre un writer y un stream no es evidente a gente con poca experiencia.
  #14 (permalink)  
Antiguo 24/05/2007, 06:23
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

A ver cris


try
{
InputStream in = new FileInputStream(file);
byte[] data = new byte[in.available()];
in.read(data);

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

servletoutputstream.write(data);
servletoutputstream.flush();
servletoutputstream.close();
} catch (IOException e) {
Traza.exception(this,".jsp-->IOException"+e.getMessage());
}
  #15 (permalink)  
Antiguo 24/05/2007, 09:34
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: cargar pdf desde jsp

ya suponia que el codigo que habia puesto no valdria para todos los pdf, solo era un aprueba del funcionamiento. a proposito gracias ElAntonie por el codigo, lo he probado pero sigue saliendo como una descarga y no que se habra directamente.

de todas formas gracias por las molestias
  #16 (permalink)  
Antiguo 24/05/2007, 10:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: cargar pdf desde jsp

El que decide si te abre el Plug-in de Acrobat Reader o te descarga el fichero es el navegador, según la configuración que tenga puesta para ese tipo de archivos, así actua.

Si tiene puesto que los PDF los descargue directamente sin preguntar primero... es dificil saltarselo. Es una opción que tienen los usuarios.

S!
  #17 (permalink)  
Antiguo 25/05/2007, 04:28
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: cargar pdf desde jsp

Claro.

Tiene razon GreenEyed es el navegador el que hace que se abra con el acrobat.
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 10:48.