Mostra Pdf nel browser usando il servlet java

Ho un file pdf nella mia applicazione. Devo visualizzare il pdf nel browser. Sto leggendo il file come fileInputStream, ho bisogno di visualizzare il pdf nel browser con nella mia applicazione. Ma non ho il percorso pdf, ho il stream di file.

Per favore, dammi qualche suggerimento ed esempi


Ho usato ajax per visualizzare il pdf, sto usando il metodo call_method () javascript ajax request per chiamare l’azione showPdf, Nell’azione showpdf basta convertire il file pdf come ByteArrayOutputStream e scrivere il risultato nel stream out put. Ma mostra il risultato sotto riportato.

Risultato in JSP :

% PDF-1.4% 1 endstream endobj 4 0 obj >> / MediaBox [0 0 595 842] >> endobj 1 0 obj endobj 3 0 obj endobj 5 0 obj endobj 6 0 obj endobj xref 0 7 0000000015 00000 n 0000000477 00000 n 0000000015 00000 n 0000000477 00000 n 0000000232 00000 n 0000000540 00000 n 0000000585 00000 n trailer <] / Info 6 0 R / Dimensione 7 >> startxref 707 %% EOF

Si prega di dare qualche suggerimento.

Javascript Ajax:

call_method(); 
function call_method(){ Ext.Ajax.request({ waitMsg: 'Saving changes...', url:'test.action?method=showPdf', params : { }, failure:function(response,options){ }, success:function(response,options){ $("#pdf_content").show(); $("#pdf_content").html(response.responseText); $("#pdf_content").show('slow'); } }); }

Metodi Java:

 public String showPdf() throws IOException { getResponse().setContentType("application/pdf"); getResponse().setHeader("Content-disposition","inline; filename=automatic_start.pdf" ); ByteArrayOutputStream baos = getByteArrayOutputStream(); getResponse().setContentLength(baos.size()); ServletOutputStream sos; sos = getResponse().getOutputStream(); baos.writeTo(sos); sos.flush(); return null; } private ByteArrayOutputStream getByteArrayOutputStream() throws IOException { String filePath = "/homefolder/"; String folderPath=filePath+"1122/automatic_start.pdf"; File file = new File(folderPath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buf = new byte[256]; try { for (int readNum; (readNum = fis.read(buf)) != -1;) { bos.write(buf, 0, readNum); //no doubt here is 0 //Writes len bytes from the specified byte array starting at offset off to this byte array output stream. System.out.println("read " + readNum + " bytes,"); } } catch (IOException ex) { ex.printStackTrace(); } return bos; }