java 浏览器 pdf,使用java servlet在浏览器中显示Pdf

I have pdf file in my application. I need to display the pdf in browser. I am reading the file as a fileInputStream, I need to display the pdf in browser with in my application. But i dont have the pdf path, I have the file stream.

Please give me some suggestion and examples

I have used ajax to display the pdf, I am using the call_method() javascript ajax request method to call the showPdf action, In showpdf action just converting the pdf file as ByteArrayOutputStream and write the result in the out put stream. But it showing the below metioned result.

Result 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 0000000000 65535 f 0000000389 00000 n 0000000015 00000 n 0000000477 00000 n 0000000232 00000 n 0000000540 00000 n 0000000585 00000 n trailer <<142354f5ebefd65d6aacd33a7cb2b4ab>]/Info 6 0 R/Size 7>> startxref 707 %%EOF

Please give some suggestion.

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');

}

});

}

Java Methods:

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;

}

解决方案

In your servlet, set the MIME type to the correct one for PDF : application/pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值