我在我的應用程序中有pdf文件。我需要在瀏覽器中顯示PDF。我正在讀取文件作爲fileInputStream,我需要在瀏覽器中顯示PDF在我的應用程序。但我沒有pdf路徑,我有文件流。使用java servlet在瀏覽器中顯示PDF
請給我一些建議和例子
我已經使用AJAX來顯示PDF,我現在用的是call_method()JavaScript的Ajax請求方法調用showPdf行動,在showpdf行動只是轉換pdf文件作爲ByteArrayOutputStream並將結果寫入輸出流。但它顯示了以下提到的結果。
結果在JSP:
%PDF-1.4%1個endstream endobj 4 0 OBJ < >>> /多媒體[0 0 595 842] >> endobj 1 0 OBJ <> endobj 3 0 OBJ <> endobj 5 0 OBJ <> endobj 6 0 OBJ <> endobj外部參照0 7 0000000000 65535˚F0000000389 00000ñ0000000015 00000ñ0000000477 00000ñ0000000232 00000ñ0000000540 00000ñ0000000585 00000ñ拖車< < 142354f5ebefd65d6aacd33a7cb2b4ab>] /信息6 0 R /大小7 >> startxref 707 %% EOF
P租約給一些建議。
的Javascript AJAX:
call_method(); <br/>
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');
}
});
}
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;
}
我有同樣的問題,但沒有得到解決。 Plz,幫助我。我應該在jsp頁面中更改什麼。需要幫忙。!! – 2012-03-27 20:25:51
我有同樣的問題......但對我來說,這是因爲我沒有包括response.setHeader(「Content-disposition」,「inline; filename = automatic_start.pdf」);由於我沒有下載的實際文件名(因爲pdf是由內存中的內容提供的),那麼我認爲我不需要在那裏有文件名。IE似乎需要它,否則它顯示你在瀏覽器中提到'%PDF-1.4%...'的亂碼。加上它的有用,所以如果它的內聯,並且用戶決定保存,它默認以我相信的名字。 PS也可以使用「attachment; ...」而不是「inline; ...」。 – armyofda12mnkeys