Abrir PDF en el host cliente

publicado por: Anonymous

Tengo una aplicación web desarrollada con jsp y servlets. En la página jsp solicito un documento pdf, el cuál se busca en el servlet, que obviamente está en el servidor. El problema es que, para abrir, utilizo la clase Desktop d, y al utilizar el método
d.browse(new URI(file://240.10.10.36/Documentos/documento.pdf))
abre el documento en el servidor y no en la pc cliente. Lo que yo necesito es que en la host cliente que solicita ese documento, se abrá dicha pc. Como podría solucionarlo?

solución

Para transferir un archivo de un servlet java a un cliente, se debe de recuperar dicho archivo como InputStream y mandarlo en la respuesta que el servidor dará a la petición del cliente. En este caso, se haría de la siguiente manera:

try {
  // Consigue el InputStream del archivo. Hay múltiples maneras de hacerlo, utiliza la que mejor te convenga.
  InputStream is = ...;
  // Copia el inputStream en la respuesta que dará el cliente al servidor. "response" es de tipo HttpServletResponse.
  org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
  response.flushBuffer();
} catch (IOException ex) {
  throw new RuntimeException("Error escribiendo en la respuesta del servidor.");
}

De esta manera, el cliente (en este caso, el navegador), descargará el archivo recuperado en el servidor, o sea, el PDF. Si en vez de que se descargue, quieres que se muestre en la página, deberás utilizar en el jsp el elemento HTML llamado iframe. Un posible ejemplo sería este:

<iframe src="url que apunta al servlet del archivo"></iframe>

De esta manera, el PDF se mostrará en el contenedor iframe en tu página.

Más información sobre el iframe: https://www.w3schools.com/tags/tag_iframe.asp

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *