ajax获取后台流使用pdfjs显示

网上找了好多资料都没有找到到底怎么使用文件流来让pdfjs显示。

经过高手的指导,终于弄出来了。遂作下记录,供大家参考。


需求:从文件服务器获得文件(pdf)让前端页面显示


首先我们需要构建好的pdfjs包,直接放在项目下面,我放这儿:

ajax获取后台流使用pdfjs显示_第1张图片

下载地址:http://download.csdn.net/detail/muluo7fen/9921114


后台的框架springmvc4,hibernate(这里的主要代码没影响)

@RequestMapping("/previewPdf.do")
@ResponseBody
public String previewPDF(HttpServletRequest request,  
            HttpServletResponse response,String fileId){
InputStream input = null;
OutputStream out = null;  
String fileName = "";
try {
……      //查询文件
if(hm!=null){

//查到文件就复制到服务器上
if("SUCCESS".equals(hm.get("STATUS").toString())){
File file = (File)hm.get("file");

//这里在服务器上创建新的文件
File pdf = new File(request.getSession().getServletContext().getRealPath("/")+"file/"+file.getName());
out = new FileOutputStream(pdf);
input = new FileInputStream(file);
byte[] b = new byte[input.available()];
int len = 0;
while ((len = input.read(b)) != -1){
   out.write(b, 0, len);
out.flush();
}
input.close();
out.close();

//复制完了文件,把应用服务器上的文件路径发给前台
fileName = file.getName();
}else{
System.out.println(hm.get("ERROR_MESSAGE").toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}

前端:

$.ajax({
type : 'POST',
url : 'xxx.do',
dataType : 'JSON',
data : {
'fileId' : fid,
},
success : function(data){
if(data){
$('.navbar-header').hide();
$('#preview-btn').show();
$('#preview-bar').show();

//这里是使用iframe显示的,因为需求要嵌入页面而不是直接打开新页面,总之只要把我们服务器上的路径作为参数给viewer.html?file=

//就可以显示了
$('#file_preview').attr('src','/pd/res/pdfJs/generic/web/viewer.html?file=/pd/file/'+data);
}
},
error : function(){alert("查询保险条款异常");}
});


附页面:


你可能感兴趣的:(web,java,pdfjs,流形式)