• pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现


    近期,有一个朋友做B端,服务器存了大量的金融类数据,很多都是pdf文档,他现在的做法是,先将pdf文档转换成flash,再放到浏览器上给用户浏览,但是他告诉我,这种体验太差了,而且很好资源,空间已经快不够了,向我咨询有没有可以直接读取pdf文档的,我之前也没做过,于是,我简单搜索了一下,还真是有,下面给大家整理出来,供大家参考。

    pdf.js是一款开源的pdf文档读取解析插件,据说在HTML5下诞生的,对于主流的浏览器基本都支持。

    官网GitHub地址如下:https://github.com/mozilla/pdf.js

    由于官网项目文件过多,不太容易理解,因此,我自己针对此项目做了一个简单的Demo,Demo参考地址如下:

    1.新窗口浏览pdf文档:http://www.51purse.com/pdf/web/viewer.html?name=b.pdf

    2.点击连接读取第一页的pdf文档:http://www.51purse.com/pdf/web/demo1.html

    3.点击连接,选择需要打开的文件,进行pdf预览:http://www.51purse.com/pdf/web/demo2.html

    pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,,一个负责API解析,一个负责核心解析

    比如Demo1,点击连接,可在当前页面打开一个pdf文档,进行预览,代码剖析

    1.引入pdf.js

    2.解析读取pdf

    function showPdf(){
    
    PDFJS.workerSrc = '../build/pdf.worker.js';//加载核心库
    PDFJS.getDocument(url).then(function getPdfHelloWorld(pdf) {
    //
    // 获取第一页数据
    //
    pdf.getPage(1).then(function getPageHelloWorld(page) {
    var scale = 1.5;
    var viewport = page.getViewport(scale);
    
    //
    // Prepare canvas using PDF page dimensions
    //
    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;
    
    //
    // Render PDF page into canvas context
    //
    var renderContext = {
    canvasContext: context,
    viewport: viewport
    };
    page.render(renderContext);
    });
    });
    
    }

    3.设置HTML标签

    <a href="javascript:void(0)" target="_blank" onclick="showPdf()">显示pdf文档</a>

    <canvas id="the-canvas"></canvas>

    4.demo1是通过调用API自己解析,通常,我们直接使用官网的Demo,比如viewer.html,或者Demo2,官方已经为我们设置好了预览的皮肤和各种事件,因此,我只需要将官方的库引进去,会进行本地预览即可。

    如果有人需要代码或者不明白的可以加入PDF群:707875596

    作者:慕课讲师/河畔一角

    前端基于Vue2.6/小程序/小程序云 + Node.js + MongoDB  全栈的微信支付、微信授权、微信好友/朋友圈分享等全栈课程,欢迎广大前端开发者购买观看

    http://coding.imooc.com/class/343.html

    前端基于Vue2.0 + Node.js + MongoDB  全栈的慕课网课程,欢迎广大前端开发者购买观看

    http://coding.imooc.com/class/113.html

    前端基于React16 + React-Router4.0 + Redux +AntD 慕课首门基于共享单车后台通用系统上线了,欢迎广大前端开发者观看

    https://coding.imooc.com/class/236.html

  • 相关阅读:
    VCL消息处理机制
    效率由心生,快速提高工作效率秘诀
    我的插件架构
    Windows消息机制要点(转)
    SQLite区分大小写查询
    请教: 事件和消息的联系?
    DataAdapter数据集DataSet和数据库的同步(3):使用CommandBuilder来更新数据集
    TCP编程(4): 发送电子邮件 MailMessage, SmtpClient, NetworkCredential
    强类型的数据集,在处理以直接附加方式的SQLServer的MDF文件时无法更新数据原因分析
    javascript调试测试,利用vs2008:智能对象类型感知,方法及属性提示;立即窗口调试等
  • 原文地址:https://www.cnblogs.com/jacksoft/p/5302587.html
Copyright © 2020-2023  润新知