使用pdf.js在移动端预览pdf文档
pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持。
在线演示地址:http://mozilla.github.com/pdf.js/web/viewer.html
PDF.js可在官网下载 地址:http://mozilla.github.io/pdf.js/
解压后得到的build目录就是PDF.js的核心文件,直接引入里面的pdf.js文件就可以使用。
html 代码示例:
<div class="pdf-view"><h1>练习</h1> <canvas id="the-canvas"></canvas> <div class="page"> <button id="prev">上一页</button> <span>页数: <span id="page_num"></span> / <span id="page_count"></span></span> <button id="next">下一页</button> </div> </div> <script src="../../bulid/pdf.js"></script> //引入pdf.js文件
pdf的预览就是通过上面的canvas展现出来的,一般移动端页面都将用户缩放禁止了,但如果在移动端页面上显示有点模糊的话,可以允许用户缩放,而宽高大小等样式根据项目要求调整吧。
JS代码示例:
var url = './练习.pdf'; //pdf文件的地址PDFJS.workerSrc = '../../build/pdf.worker.js'; //引入主要文件var pdfDoc = null, pageNum = 1, pageRendering = false, pageNumPending = null, scale = 0.8, canvas = document.getElementById('the-canvas'), ctx = canvas.getContext('2d'); function renderPage(num) { pageRendering = true; pdfDoc.getPage(num).then(function(page) { var viewport = page.getViewport(scale); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: ctx, viewport: viewport }; var renderTask = page.render(renderContext); renderTask.promise.then(function() { pageRendering = false; if (pageNumPending !== null) { // New page rendering is pending renderPage(pageNumPending); pageNumPending = null; } }); }); document.getElementById('page_num').textContent = pageNum; } function queueRenderPage(num) { if (pageRendering) { pageNumPending = num; } else { renderPage(num); } } function onPrevPage() { if (pageNum <= 1) { return; } pageNum--; queueRenderPage(pageNum); } document.getElementById('prev').addEventListener('click', onPrevPage); function onNextPage() { if (pageNum >= pdfDoc.numPages) { return; } pageNum++; queueRenderPage(pageNum); } document.getElementById('next').addEventListener('click', onNextPage); PDFJS.getDocument(url).then(function(pdfDoc_) { pdfDoc = pdfDoc_; document.getElementById('page_count').textContent = pdfDoc.numPages; renderPage(pageNum); });
参考:http://blog.csdn.net/li_cheng_liang/article/details/75332938
转载于:https://www.cnblogs.com/haqiao/p/8510269.html
使用pdf.js在移动端预览pdf文档相关推荐
- pdf.js使用(在线预览pdf文件)
最近公司需要pdf在线预览,于是找到pdf.js这个插件 , 好处就在于 pc端和移动端 不需要花过多的精力去调. 1:需要到官网下载源码:https://mozilla.github.io/pdf. ...
- 移动端h5页面预览word文档
在web端预览word文档,可以使用iframe来实现.但由于兼容性问题,并不能使用iframe在安卓和ios上预览文件 经测试发现,mammoth插件可以实现该功能 <!DOCTYPE htm ...
- h5,移动端预览pdf文件,使用pdfh5插件
苹果机 是可以直接打开一个 pdf的网络路径进行预览的 问题是 安卓直接打开的话 就跳转到下载页面 或者那个大哥可以找一个h5 页面可以预览word文档 (其实吧 也可以 只要你愿意花钱 还是能 ...
- 加载js文件,在线预览pdf文档
加载js文件,在线预览pdf文档 效果演示 环境要求 JS文件下载 Jsp页面导入js文件 jquery.media.js源码 效果演示 首先,先展示效果图 环境要求 Tomcat8.5 [注意]:T ...
- html做在线预览pdf文件,html中在线预览pdf文件之pdf在线预览插件
html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...
- html 在线预览pdf功能,html中在线预览pdf文件之pdf在线预览插件
html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件!javascript 翻来覆去找到两种办法 ,最后采用了jquery.media.js插 ...
- Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等
前言 PDF.TXT 只要资源可访问,根本就不需要进行任何处理,直接访问查看就完事了. 也是因为这个PDF可以直接查看(现在浏览器基本支持了),那么我们实现Word文档在线预览,其实也是 把WORD文 ...
- Android实现在线预览office文档(Word,Pdf,excel,PPT.txt等格式)
1.概述 我们都知道,Android原生并没有提供浏览office文档格式的相关Api,在安卓端想要实现在线预览office文档的功能显然很是复杂,我们手机安装QQ浏览器时,在手机打开office文档 ...
- 在线预览word文档
在线预览word文档 在线预览word文档 Java 使用wps将word文件转换pdf文件 转成PDF 在线预览word(转成pdf)前端展示 欢迎来提更好的意见 在线预览word文档 昨天下午组长 ...
最新文章
- 1亿以内素数的个数_ghpython_素数
- SAP RETAIL MM42里可以顺便维护一下Source List
- 牛客题霸 NC22 合并两个有序的数组
- 深入理解java垃圾回收机制
- sharepoint站点移植方案
- 缓存击穿和缓存穿透的区别_后端RoadMap011:缓存穿透、缓存击穿、缓存雪崩区别和解决方案...
- 联想 键盘 fn linux,开发者提交补丁,Linux 5.10 或支持联想 PC 键盘快捷键
- android udt协议,接口和软件包 | Android 开源项目 | Android Open Source Project
- 设计模式13_享元模式
- 3个开源TTS(五)eSpeak1.06的源码调试分析
- WP应用程序磁贴设置
- python fun函数输入某年某月_Python编程实现输入某年某月某日计算出这一天是该年第几天的方法...
- 由对称引起的空间结构耦合效应
- ros服务器打开网页变慢了,解决ros 在计算机没有限速情况下,有几个网站打开很慢,或者打不开。...
- drf框架图片路径问题
- Java和部门管理的那些事情
- lua小技巧(二)——lua全局变量的检测
- aab c式_aab表示的四字成语大全
- VNC CentOS Linux下VNC Server远程桌面配置详解
- 蚂蚁金服Java暑期面试
热门文章
- Netty之四种常用 IO 模型
- linux pxe安装视频,Linux—图解PXE实现全自动安装系统(1)
- java多线程图解_java多线程实例图解讲解
- 三个常用c++11特性
- 缓存服务的更新策略有哪些?
- php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...
- python 标量_python:将标量视为一个元素列表
- 【Flink】Flink Heartbeat of TaskManager with id timed out.
- 【kafka】kafka 消费组 加入 离开 reblance 案例
- 【ElasticSearch】Es 缓存