У меня есть PDF-файл в моей заявке. Мне нужно отобразить PDF в браузере. Я читаю файл как fileInputStream, мне нужно отобразить PDF в браузере в моем приложении. Но у меня нет пути в PDF, у меня есть поток файлов.
Пожалуйста, дайте мне несколько советов и примеров
Я использовал ajax для отображения pdf, я использую jaascript-метод call_method () для вызова действия showPdf, В действии showpdf просто конвертируем pdf-файл в ByteArrayOutputStream и записываем результат в выходной поток. Но это показывает нижеуказанный результат.
Результат в JSP :
% PDF-1,4% 1 конечный поток 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 0000000000 65535 f 0000000389 00000 n 0000000015 00000 n 0000000477 00000 n 0000000232 00000 n 0000000540 00000 n 0000000585 00000 n трейлер << 142354f5ebefd65d6aacd33a7cb2b4ab>] 70 7% R6> 70 7% r R> 7/70% R = 0% 7% R = 0% 7% R = 7 EOF
Пожалуйста, дайте некоторое предложение.
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;
}