Una servlet Java per aprire file PDF

Vedremo come aprire o salvare un file con Java

Scriviamo subito la nostra classe, la chiameremo ApriPdf

public class ApriPdf extends HttpServlet{

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		OutputStream out = null;
		String filePath = "posizione del file";
		File file = new File(filePath);

		if(file.exists()){
			out = response.getOutputStream();
			response.setContentType("application/pdf;charset=UTF-8");
			response.setHeader("Content-Disposition","inline;filename=Nome_del_file.pdf");
			FileInputStream fis = new FileInputStream(file);
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			byte[] buf = new byte[4096];
			
			try {
				for (int readNum; (readNum = fis.read(buf)) != -1;) {
					bos.write(buf, 0, readNum);
				}
			} catch (IOException ex) { 
				log.debug(ex.getMessage());
				ex.printStackTrace();
			}
			
			byte[] bytes = bos.toByteArray();
			int lengthRead = 0;
			InputStream is = new ByteArrayInputStream(bytes);
			
			while ((lengthRead = is.read(buf)) > 0) {
				out.write(buf);
			}
			
			fis.close();
			bos.close();
			is.close();
			out.close();
		}
	}
}

Tramite l’header potremo decidere se eseguire il download del nostro file PDF (attachment), oppure se visualizzarlo nella finestra del browser (inline).

Ci manca a questo punto la configurazione della servlet nel file web.xml

<servlet>
    <servlet-name>ApriPdf</servlet-name>
    <servlet-class>posizione.logica.della.classe.ApriPdf</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ApriPdf</servlet-name>
    <url-pattern>ApriPdf</url-pattern>
</servlet-mapping>

Basta così. Ci basterà solo richiamare la nostra servlet dall’indirizzo fisico che abbiamo creato http://host/ApriPdf dal browser per visualizzare o fare il download del file.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *