您的位置:首页 > Web前端 > JavaScript

关于PDFJS在线预览

2017-08-21 13:41 489 查看
     之前做过PDF预览,在本项目中,本是之前做好了,项目经理突然要求要后台给前传文件流的方式来预览,这可把我给蛋疼的,在网上搜罗一翻,找到PDFJS来实现效果,在网上找了各种资料,可是就是不显示啊有木有,经过两的时间  总算找到了原因,我不知道网上其他大牛是怎么做出来的,反正我按照他们的方式是不行,下面来说说我遇到的问题,整理一下,希望能帮助遇到和我一样问题的同学!

首先来看看网上的说法:

 

第一步:下载源码https://github.com/mozilla/pdf.js

第二步:构建PDF.js

第三步:修改viewer.js

var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf'
 里面是PDF的路径

删除该变量定义;

第四步:通过ajax的方式获取文件流数据,并处理。

Js代码  


var DEFAULT_URL = "";//注意,删除的变量在这里重新定义  

var PDFData = "";  

$.ajax({  

    type:"post",  

    async:false,  

    mimeType: 'text/plain; charset=x-user-defined',  

    url:文件流请求地址,  

    success:function(data){  

       PDFData = data;  

    }  

});  

var rawLength = PDFData.length;  

//转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068  

var array = new Uint8Array(new ArrayBuffer(rawLength));    

for(i = 0; i < rawLength; i++) {  

  array[i] = PDFData.charCodeAt(i) & 0xff;  

}  

DEFAULT_URL = array;  

 第五步:将上面的代码作为js文件或是代码片段,加入viewer.html(上面的代码要放在<script src="viewer.js"></script>引入之前)。

问题来了,我就是按照这种方法来的  可死活就是不行,经过对问题的查找,找到了问题所在:

那就是viewer.js中的这个方法在ajax请求这前就执行了,所以DEFAULT_URL
一直是空,于是我改了下这个方法,在webViewerInitialized()中加了一个方法参数,在页面js中的相应方法也改了!

果然:问题完美解决!

大家要是还有什么不明的,可以直接下载我改过后的PDFJS的demo: 
http://download.csdn.net/download/qq616138361/9943149
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pdf.js