PDF在线预览

1、前端需要引入pdf.js、pdf.worker.js

    /**
     * 预览pdf文件
     * pop 用于显示pdf文件的jquery对象
     * workerSrc pdf.worker.js相对于调用showPdf方法文件的路径
     * 如:../../../lib/pdf/pdf.worker.js
     * data pdf的base64数据
     */
    pageNS.showPdf = function(pop,data,workerSrc) {
        debugger;
        $(pop).empty();
        var url = convertDataURIToBinary(data);
        PDFJS.workerSrc = workerSrc;
        PDFJS.getDocument(url).then(function getPdfHelloWorld(pdf){
             pages = pdf.numPages;
             for(var i = 1; i <= pdf.numPages; i++){
                 var id = 'page-id-' + i;
                 $(pop).append('<canvas id="' + id + '"></canvas>');
                 showAll(url,i,id);
             }
         });
    }
    
    var showAll = function(url,page,id){
        PDFJS.getDocument(url).then(function getPdfHelloWorld(pdf){
            pdf.getPage(page).then(function getPageHelloWorld(page){
                var scale = 1;
                var viewport = page.getViewport(scale);
                var canvas = document.getElementById(id);
                var context = canvas.getContext('2d');
                canvas.height = viewport.height;
                canvas.width = viewport.width;
                var renderContext = {
                    canvasContext:context,
                    viewport:viewport
                };
                page.render(renderContext);
            });
        });
    };
    
    var convertDataURIToBinary = function(dataURI) { //将encodeBase64解码
        dataURI = dataURI.replace(/[\r\n]/g,'');
        var raw = window.atob(dataURI);
        var rawLength = raw.length;
        //转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068
        var array = new Uint8Array(new ArrayBuffer(rawLength));  
        for(i = 0; i < rawLength; i++) {
          array[i] = raw.charCodeAt(i)&0xff;
        }
        return array;
     };
2、后端从ftp上获取PDF文件并将其转换成base64数据传给前台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值