在线阅读PDF文件js插件——pdf.js
最近接到一个需求大致是这样的,要求在移动端和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的更多相关文章
- html页面预览pdf文件使用插件pdfh5.js
html预览pdf文件需要依赖pdf.js 移动端适配需要pdfh5.js 记录移动端适配pdfh5.js的用发 在线预览: https://www.gjtool.cn/pdfh5/pdf.html? ...
- js插件---bootstrap-datepicker.js是什么
js插件---bootstrap-datepicker.js是什么 一.总结 一句话总结:选择时间的插件 时间选择插件 1.datepicker如何默认选择当前天? 直接给datepicker对应的i ...
- js插件---video.js如何使用
js插件---video.js如何使用 一.总结 一句话总结:还是要去官方网站去看英文文档.快点把英语学好啊. 1.如何快速使用这些插件(比如video.js)? 直接百度这些js如何使用就可以了,这 ...
- 史上最强php生成pdf文件,html转pdf文件方法
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- 怎么编辑PDF文件内容,PDF文件编辑方法
怎样编辑PDF文件内容?这是一个常常困扰我们的问题,工作当中我们经常会收到PDF格式的文件,但有时的文件内容不是我们想要的或者是觉得不合理的需要改掉.但是每次有这样的问题时都没有什么好的解决方法,每次 ...
- 如何修改PDF文件内容,PDF怎么添加背景
很多的情况下,大家都会遇到PDF文件,不管是在学习中还是在工作中,对于PDF文件,文件的修改编辑是需要用到PDF编辑软件的,在编辑文件的时候,发现文件的页面是有背景颜色的,又该如何修改背景颜色呢,不会 ...
- js插件---layer.js使用体验是怎样
js插件---layer.js使用体验是怎样 一.总结 一句话总结:只有jquery和js,没有css,使用各种弹出层掉用各种函数特别方便,特别简单,特别好用. 引入只需要引入这两个,css都不需要, ...
- SpringBoot在线预览PDF文件(引用pdf.js工具)
本项目Demo使用了PDF.js插件实现PDF在线阅读功能PDF.js插件下载地址 实测能用! 1.创建SpringBoot项目,目录结构如下: 2.进行项目配置: pom.xml: <proj ...
- laravel项目中手机浏览器在线阅读pdf文件-->PDFJS插件
第一步:下载链接:http://mozilla.github.io/pdf.js/getting_started/#download 第二步:将下载的文件放在项目中. 第三步:在项目中想要预览的地方给 ...
随机推荐
- docker - 容器里安装mysql
在docker中安装mysql ubuntu官方镜像是精简的ubuntu系统,很多软件和库没有安装,所以直接安装mysql的话依赖较多,建议直接从源码编译安装mysql 通过命令行安装 先启动一个容器 ...
- Angular实现购物车计算
使用AngularJS实现一个简单的购物车,主要感受强大的双向绑定和只关注对象不关注界面特性. 先看看界面: 点击+-操作和删除: 这些全部只需要操作数据源就行,不需要关注界面. 实现过程: 一.使用 ...
- C# GDI绘图之——画笔和画刷
绘制图形需要画笔和画刷: Pen(画笔类): Pen为C#编程语言中专门的画笔类 使用方式: // 用系统颜色来初始化我们的画笔类,使用Color静态类中的颜色 1. Pen p1 = new Pen ...
- CHM文件无法打开的解决方法
转载请注明来自:http://www.yaosansi.com原文地址:http://www.yaosansi.com/post/cannot_open_chm_file.html 目录:一.正确操作 ...
- OC中extern,static,const的用法
1.const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 例如 NSString *const SIAlertViewWillDismissNotification; ...
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草(动态规划)
裸的背包= =,没什么好说的= = CODE: #include<cstdio>#include<iostream>#include<algorithm>#incl ...
- HttpHeplp 公共类 HttpWebRequest
public class HttpHelp { public CookieContainer CookieContainer { get; set; } public CookieCollection ...
- mfc--弹出文件夹对话框
1. HRESULT CoInitializeEx(void* pvReserved,DWORD dwCoInit) 初始化com组件,传递参数COINIT_APARTMENTTHREADED 2.L ...
- 深入源码剖析String,StringBuilder,StringBuffer
[String,StringBuffer,StringBulider] 深入源码剖析String,StringBuilder,StringBuffer [作者:高瑞林] [博客地址]http://ww ...
- ThreadLocal笔记
1.ThreadLocal的作用是什么? ThreadLocal是一个泛型类,将保存在其中的值与当前的线程关联起来,这样每个线程看到的值对于其他线程来说都是不可见的,这个技术被称为线程封 ...