Dummy-X

Informatica a portata di tutti

Una servlet Java per aprire file PDF

14 Febbraio 2019 / DEV / 67 visualizzazioni
Scritto da  

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.

Condividi se l'articolo ti è piaciuto, ci aiuterai a crescere
Francesco
Fondatore e amministratore di Dummy-X dal 2007, condivido interessi, idee, progetti, e soluzioni informatiche. Non vendo prodotti, mi limito a descrivere tecnologie e a mettere a disposizione gli strumenti adatti per poter realizzare idee. Tutto ciò che scrivo è frutto della mia esperienza lavorativa e della mia voglia di imparare. Da sempre studio l'informatica in tutte le sue angolazioni (software, hardware, reti e sicurezza) e negli ultimi anni mi sono specializzato nello sviluppo di web applications. Sono sempre aperto a nuove sfide e alla ricerca e conoscenza delle nuove tecnologie.

Lascia un commento

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