最近接到一个需求大致是这样的,要求在移动端和pc端能够在线阅读pdf文件,类似百度文库的功能。

首先想到的就是插件,github(全球最大的男性交友网站- -恩)上一大堆啊,首先找到一个PDFobject,用来一下,在PC端运行还可以,但是在移动端用手机的浏览器就不好用了

原因是它要求在客户端安装Adobe Reader,所以再找啊找,找到了pdf.js,它是Mozilla公司开发的一款在线阅读PDF插件,废话少说,直接干!

下载地址:https://github.com/dunitian/PDFJSDemo

目录结构:

PDF:存放PDF文件    pdfjs:核心文件       index.html:入口文件  Demo.html:通过file参数传递文件名显示不同的文件

我们在本地打开index.html文件,然后我们看到这样的一句话:

看来在本地是行不通的了,那么我们就把他放到我们的服务器上。

看到链接地址直接跳到web目录下的viewer.html文件,我就顺藤摸瓜,找到该目录下,发现了view.js文件中

Default_url 就是默认打开额url地址 修改它就可以查看其它的pdf文件

讲到这里,功能已经基本实现了,经过测试也能在移动端兼容,但是昨天在我的iphone中测试时发现了另一个问题

百度了一下,

问题是由于服务器对http的get请求进行了数据的部分响应,导致pdf无法继续打开。尝试了很多方法,修改请求头等方式都不成功;

最后,通过查询pdf.js中的compatibility.js发现它里面对disableRange和disableStream进行了判断。唯独没有对IOS系统做判断,所以导致了以上请求问题;

借鉴github中大牛们的解决方式,成功解决了以上问题。

方式如下:

1、在compatibility.js中添加对ios系统的判断;

var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(navigator.userAgent);

2、在判断中添加此项

      if (isSafari || isOldAndroid || isChromeWithRangeBug || isIOS) { 
          PDFJS.disableRange = true; 
          PDFJS.disableStream = true; 
      }

     3、保存即可;

注:以上是对常用的浏览器和移动端系统做了判断,如别的浏览器或者系统,可根据实际情况进行扩展。

然后就照着它的修改

然后打开页面就正常了

昨天折腾了两个小时,最后说插件的用户体验不好,改成图片的格式,晕,好吧,不过也是学习了一下~

另附Demo.html用法:

https://yq.aliyun.com/articles/40197

在线阅读PDF文件js插件——pdf.js的更多相关文章

  1. html页面预览pdf文件使用插件pdfh5.js

    html预览pdf文件需要依赖pdf.js 移动端适配需要pdfh5.js 记录移动端适配pdfh5.js的用发 在线预览: https://www.gjtool.cn/pdfh5/pdf.html? ...

  2. js插件---bootstrap-datepicker.js是什么

    js插件---bootstrap-datepicker.js是什么 一.总结 一句话总结:选择时间的插件 时间选择插件 1.datepicker如何默认选择当前天? 直接给datepicker对应的i ...

  3. js插件---video.js如何使用

    js插件---video.js如何使用 一.总结 一句话总结:还是要去官方网站去看英文文档.快点把英语学好啊. 1.如何快速使用这些插件(比如video.js)? 直接百度这些js如何使用就可以了,这 ...

  4. 史上最强php生成pdf文件,html转pdf文件方法

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. 怎么编辑PDF文件内容,PDF文件编辑方法

    怎样编辑PDF文件内容?这是一个常常困扰我们的问题,工作当中我们经常会收到PDF格式的文件,但有时的文件内容不是我们想要的或者是觉得不合理的需要改掉.但是每次有这样的问题时都没有什么好的解决方法,每次 ...

  6. 如何修改PDF文件内容,PDF怎么添加背景

    很多的情况下,大家都会遇到PDF文件,不管是在学习中还是在工作中,对于PDF文件,文件的修改编辑是需要用到PDF编辑软件的,在编辑文件的时候,发现文件的页面是有背景颜色的,又该如何修改背景颜色呢,不会 ...

  7. js插件---layer.js使用体验是怎样

    js插件---layer.js使用体验是怎样 一.总结 一句话总结:只有jquery和js,没有css,使用各种弹出层掉用各种函数特别方便,特别简单,特别好用. 引入只需要引入这两个,css都不需要, ...

  8. SpringBoot在线预览PDF文件(引用pdf.js工具)

    本项目Demo使用了PDF.js插件实现PDF在线阅读功能PDF.js插件下载地址 实测能用! 1.创建SpringBoot项目,目录结构如下: 2.进行项目配置: pom.xml: <proj ...

  9. laravel项目中手机浏览器在线阅读pdf文件-->PDFJS插件

    第一步:下载链接:http://mozilla.github.io/pdf.js/getting_started/#download 第二步:将下载的文件放在项目中. 第三步:在项目中想要预览的地方给 ...

随机推荐

  1. 《无所不能的JavaScript编程系列:arguments 参数对象》

    前言:无所不能的JavaScript JavaScript起源于Netscape公司的LiveScript语言,这是一种基于对象和事件驱动的客户端脚本语言,最初的设计是为了检验HTML表单输入的正确性 ...

  2. Vuex 模块化与项目实例 (2.0)

    Vuex 强调使用单一状态树,即在一个项目里只有一个 store,这个 store 集中管理了项目中所有的数据以及对数据的操作行为.但是这样带来的问题是 store 可能会非常臃肿庞大不易维护,所以就 ...

  3. Java三大修饰符

    1.static 修饰: 修饰属性:类变量,全类共有 修饰方法:静态方法,静态方法中不能直接访问非静态的方法和属性 静态方法只能被静态方法覆盖,并且没有多态 静态的方法或者属性不依赖于对象:类名.方法 ...

  4. TypeScript-01-变量、基本类型和运算符

    基本类型 基本类型有boolean.number.string.array.void.所有类型在TypeScript中,都是一个唯一的顶层的Any Type 类型的自类型.any关键字代表这种类型. ...

  5. 初学jQuery之jQuery事件与动画

    今天我们就谈谈jquery中的事件和简单动画吧,它们毕竟基础是进阶华丽的根本!! 1.事件 1.window事件 ready   准备就绪 2.鼠标事件 方法                      ...

  6. BZOJ 3299: [USACO2011 Open]Corn Maze玉米迷宫(BFS)

    水题一道却交了4次QAQ,真是蒟蒻QAQ CODE: #include<cstdio>#include<iostream>#include<cstring>#inc ...

  7. 几分钟看完 flow.ci 全部功能

    从 0 到 1,从邀请式内测到收费上线,flow.ci 经历了十个多月的沉淀与打磨.这期间,flow.ci 工程师们奋力赶工,进行了一系列的大功能更新,Bug 修复,功能优化. 这篇文章记录了 flo ...

  8. 【排序算法】快速排序算法 Java实现

    快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 基本思想 先从数组中找出一个数作为基 ...

  9. 学习笔记——Java包装类

    由于Java不能定义基本类型的对象,所以通过包装类提供了各种可用方法的封装. 这一部分的知识,需要能够通过查看Integer.Boolean.Byte.Character.Double.Number类 ...

  10. 在Eclipse上通过插件获取github上的spring源码

    spring源码开始的时候是通过SVN来管理代码的,后来是转移到github上管理源码的,可以通过在github上直接下载spring的源码. 下面讲解如何通过在eclipse上的插件git来获取sp ...