2016-08-03 27 views
0

Ich möchte eine PDF-Datei in einem neuen Tab des Browsers der Clientseite anzeigen.Java PDF-Datei im neuen Browserfenster öffnen

Ich habe eine Servlet-Klasse erstellt, um die PDF-Datei anzuzeigen, ich bin neu in Java und ich weiß nicht, wie ich die Klasse verwenden soll, die ich erstellt habe, und ob die Klasse richtig ist.

Ich arbeite mit Java auf Windows mit Tomcat.

Der Servlet-Code:

public class DisplayPdf extends HttpServlet implements Servlet { 

private static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, 
     IOException { 
    processRequest(request, response); 
} 

private void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, 
     IOException { 
     File file = new File("test.pdf"); 
     InputStream inputStream = getServletContext().getResourceAsStream("/WEB-INF/resources/test.pdf"); 
     OutputStream outputStream = new FileOutputStream(file); 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = inputStream.read(buffer)) > 0) { 
      outputStream.write(buffer, 0, length); 
     } 
     outputStream.close(); 
     inputStream.close(); 
} 

}

Wie kann ich dieses Servlet aufrufen und aus dem Java-Webapp nutzen?

Antwort

0

Dies hat eigentlich nichts (oder nur sehr wenig) mit Servlets oder irgendeiner anderen serverseitigen Technologie zu tun, das Öffnen eines neuen Fensters/Tabs oder das Speichern eines Dialogs ist vollständig in der Kompetenz des Browsers. Alles, was Sie serverseitig tun können, ist das Setzen von richtigen HTTP-Headern für Ihre Antwort, z.

response.setContentType("application/pdf"); 
response.setHeader("Content-Disposition", "inline; filename=\"My.pdf\""); 

Der inline Teil des Content-Disposition Header sagt Browser, dass es die Datei inline angezeigt werden kann, wenn es in der Lage ist, würde attachment herunterladen erzwingen.

Sie können das Öffnen eines neuen Tabs/Fensters aus dem HTML erzwingen, in dem die Datei verknüpft ist, z.

<a href="#" onclick="window.open('My.pdf', '_blank', 'fullscreen=yes'); return false;">My PDF</a> 

Weitere Informationen finden Sie in der Dokumentation window.open().