之前做过PDF预览,在本项目中,本是之前做好了,项目经理突然要求要后台给前传文件流的方式来预览,这可把我给蛋疼的,在网上搜罗一翻,找到PDFJS来实现效果,在网上找了各种资料,可是就是不显示啊有木有,经过两的时间 总算找到了原因,我不知道网上其他大牛是怎么做出来的,反正我按照他们的方式是不行,下面来说说我遇到的问题,整理一下,希望能帮助遇到和我一样问题的同学!
首先来看看网上的说法:
第一步:下载源码https://github.com/mozilla/pdf.js
第二步:构建PDF.js
第三步:修改viewer.js
var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf' 里面是PDF的路径
删除该变量定义;
第四步:通过ajax的方式获取文件流数据,并处理。
- 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