利用pdf.js在线展示PDF文档

在Web项目中,经常需要在浏览器端展示PDF文档,本文通过一个简单的小例子,简述pdf.js【一个通用的、基于web标准的、用于解析和呈现pdf的平台】的简单使用,仅供学习分享使用,如有不足之处,还请指正。

在Web项目中,经常需要在浏览器端展示PDF文档,本文通过一个简单的小例子,简述pdf.js的简单使用,仅供学习分享使用,如有不足之处,还请指正。

pdf.js下载

pdf.js是一个通用的、基于web标准的、用于解析和呈现pdf的平台。用户可以通过pdf.js的官方网站,进行下载,如下图所示:

 

关于下载页面说明:目前pdf.js的稳定版本就v2.6.347,Prebuilt是基于较新浏览器,采用了ES6的写法。Prebuilt(for older browsers)基于旧版本浏览器,采用ES5的写法。所以对于不支持ES6的浏览器,则需要下载ES5的库。

 

浏览器支持ES6现状

目前浏览器对于ES6的支持,还不是很完善,支持情况如下所示:

  •  桌面端浏览器对ES2015的支持情况
    • Chrome:51 版起便可以支持 97% 的 ES6 新特性。
    • Firefox:53 版起便可以支持 97% 的 ES6 新特性。
    • Safari:10 版起便可以支持 99% 的 ES6 新特性。
    • IE:Edge 15可以支持 96% 的 ES6 新特性。Edge 14 可以支持 93% 的 ES6 新特性。(IE7~11 基本不支持 ES6)
  •  移动端浏览器对ES2015的支持情况
    • iOS:10.0 版起便可以支持 99% 的 ES6 新特性。
    • Android:基本不支持 ES6 新特性(5.1 仅支持 25%)
  •  服务器对ES2015的支持情况
    • Node.js:6.5 版起便可以支持 97% 的 ES6 新特性。(6.0 支持 92%)

 具体支持情况,可参考链接

关于pdf.js对浏览器支持

经过测试发现,新版本的pdf.js对IE浏览器已不再支持,如果所属项目需要支持IE浏览器,则是下载旧版本的pdf.js库。具体支持情况,如下所示:

 

 pdf.js对Chrome,Firefox浏览器支持友好,对于not Chromium-based的 IE11和Edge浏览器,新版本将不再支持。具体可参考pdf.js的FAQ链接

pdf.js目录结构

pdf.js库下载以后,文件目录结构,如下所示:

复制代码

├── build/
│   ├── pdf.js                             - display layer
│   ├── pdf.js.map                         - display layer's source map
│   ├── pdf.worker.js                      - core layer
│   └── pdf.worker.js.map                  - core layer's source map
├── web/
│   ├── cmaps/                             - character maps (required by core)
│   ├── compressed.tracemonkey-pldi-09.pdf - PDF file for testing purposes
│   ├── debugger.js                        - helpful debugging features
│   ├── images/                            - images for the viewer and annotation icons
│   ├── locale/                            - translation files
│   ├── viewer.css                         - viewer style sheet
│   ├── viewer.html                        - viewer layout
│   ├── viewer.js                          - viewer layer
│   └── viewer.js.map                      - viewer layer's source map
└── LICENSE

复制代码

备注:pdf.js不支持file:// urls 进行浏览,只支持https://urls的方式进行访问。

pdf.js调用方式

pdf.js调用以具体项目为准,本文介绍一种常见调用方式【viewer.html?file=文件路径】,如下所示:

1 <div id="container">
2     <div id="article">
3         <iframe id="pdf" width="100%" height="800px" src="viewer.html?file=20210308.pdf">
4         </iframe>
5     </div>
6 </div>

示例效果图

本示例为了支持IE浏览器,则采用pdf.js版本为pdfjs-2.5.207-es5-dist,在IE浏览器效果如下所示:

 关于pdfjs-2.5.207-es5-dist的下载链接,可点击下载。

关于github.com相关问题

》》页面访问超时

如官网无法打开,提示页面无法访问,则需要配置hosts文件,路径为C:\Windows\System32\drivers\etc\hosts,打开文件,增加如下内容:

1 # GitHub Start 
2 140.82.112.4 github.com
3 199.232.69.194 github.global.ssl.fastly.net
4 # GitHub End
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
加载大型PDF文档时,pdf.js提供了一些性能优化和技巧,以提高加载速度和减少内存占用。下面是一些可以考虑的方法: 1. 分页加载:对于大型PDF文档,你可以使用分页加载的方式来减少一次性加载整个文档的内存占用。可以根据需要,只加载当前可见页面及其周围的几页。这样可以在保持性能的同时,提供流畅的用户体验。 2. 延迟加载:当用户滚动或翻页时,你可以使用延迟加载的方式来加载页面内容。即只有当用户接近或到达某个页面时才开始加载该页面的内容。这样可以减少初始加载时间,并允许用户快速查看和操作PDF文档。 3. 虚拟滚动:对于大型PDF文档,使用虚拟滚动技术可以提高渲染性能和内存利用率。只有当前可见页面及其周围的几页会被实际渲染,其他页面则只在需要时动态加载和渲染。 4. 缓存机制:pdf.js提供了缓存机制,可以将已渲染的页面缓存起来,以便在用户返回之前能够快速重新显示。这样可以避免重复渲染相同的页面,提高用户体验。 5. 使用Web Worker:pdf.js支持在Web Worker中执行解析和渲染任务,这样可以将一些计算密集型的任务从主线程中分离出来,提高响应性和性能。 需要注意的是,加载大型PDF文档可能仍然需要一些时间,具体的加载速度还会受到网络和设备性能的影响。因此,在实际应用中,你可能还需要进行性能测试和优化,以确保在不同环境下都能提供良好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开源字节

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值