关键词搜索

全站搜索
×
密码登录在这里
×
注册会员
×

已有账号? 请点击

忘记密码

已有账号? 请点击

使用其他方式登录

H5手机移动端在线浏览pdf文件插件

发布2021-05-31 浏览2201次

详情内容

在pc比较容易实现pdf在线浏览,但在H5手机移动端在线浏览pdf文件,同时支持手指缩放功能插件,这里推荐几个开源的pdf移动在线预览插件。

这里为网友推荐一下比较好用的在线浏览pdf插件。

一 pdfh5.js插件。支持js和vue模块化引入方式

演示:https://www.gjtool.cn/pdfh5/pdf.html

git地址:https://gitee.com/pjjg/pdfh5

效果:

pdfh5.js示例

script标签引入方式(需下载本项目文件夹css/pdfh5.css、js内所有文件)

<link rel="stylesheet" href="css/pdfh5.css" />
<div id="demo"></div>
<script src="js/pdf.js" type="text/javascript" charset="utf-8"></script>
<script src="js/pdf.worker.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/pdfh5.js" type="text/javascript" charset="utf-8"></script>

实例化

var pdfh5 = new Pdfh5('#demo', {
  pdfurl: "./default.pdf"
});

npm安装方式(适应于vue)

npm install pdfh5

vue使用

<template>
  <div id="app">
	<div id="demo"></div>
  </div>
</template>
<script>
  import Pdfh5 from "pdfh5";
  export default {
    name: 'App',
	data() {
	  return {
	    pdfh5: null
	  };
	},
	mounted() {
		//实例化
	  this.pdfh5 = new Pdfh5("#demo", {
		pdfurl: "../../static/test.pdf"
	  });
	  //监听完成事件
	  this.pdfh5.on("complete", function (status, msg, time) {
		console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum)
	  })
	}
  }
</script>

<style>
	@import "pdfh5/css/pdfh5.css";
	*{
	padding: 0;
	margin: 0;
	}
	html,body,#app {
	width: 100%;
	height: 100%;
	}
</style>

API接口方法

注意: pdf路径地址用相对路径加载速度最快,网络地址比较慢,本地绝对路径地址不能加载。

注意: pdf路径地址用相对路径加载速度最快,网络地址比较慢,本地绝对路径地址不能加载。

注意: pdf路径地址用相对路径加载速度最快,网络地址比较慢,本地绝对路径地址不能加载。

实例化

pdfh5实例化的时候传两个参数,selector选择器,options配置项参数,options可以不填写,会自动获取浏览器地址栏?file=后面的地址。会返回一个pdfh5实例对象,可以用来操作pdf,监听相关事件

var pdfh5 = new Pdfh5(selector, options);


参数名称

类型

取值

是否必须

作用


selector    {String}    -    √    pdfh5的容器选择器    

options    {Object}    -    ×    pdfh5的配置项参数    

options配置项参数列表

示例: 配置项参数 lazy:true 开启懒加载,默认是false,不开启懒加载


var pdfh5 = new Pdfh5('#demo', {
	pdfurl: "./default.pdf",
	lazy:true 
});



二 TouchPDF

git:https://github.com/May1st/pdf-online-h5-in-IOS-ANDROID.git

公共的pdf页面可以自己写,调用插件的代码也相对简单:
seePDF.html

<!-- 头部导入,注意jquery版本 -->
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="pdf.compatibility.js"></script>
<script type="text/javascript" src="pdf.js"></script>
<script type="text/javascript" src="jquery.touchSwipe.js"></script>
<script type="text/javascript" src="jquery.panzoom.js"></script>
<script type="text/javascript" src="jquery.mousewheel.js"></script>
<script type="text/javascript" src="jquery.touchPDF.js"></script>
<link href="jquery.touchPDF.css" rel="stylesheet" media="screen" /> 
<!-- body中放个div -->
<div id="myPDF" style="height: 95%; width: 95%; margin: auto;"></div>

seePDF.js

$(function() {
  //文件服务器的路径
  var picDownloadServerUrl = window && window.weapon ? window.weapon.picDownloadServer : '',
  //url中传递的pdf文件路径
  pdfURL = Utils.getParamFromUrl('pdfURL'),
  //pdf浏览路径
  s = picDownloadServerUrl + pdfURL;
  //开始使用TouchPDF插件
  $("#myPDF").pdf( {
    title: '',
    source: s,
    loadingWitdh: loadingWitdh,
    loadingHeight: loadingHeight
  } );
  alert('可左右滑动翻页');
})

项目中自己做了个简单的公共插件modal,是一个可以展示图片或者pdf的弹窗,pdf则使用iframe动态将自己的seePDF页面路径插入src。此处要注意src的路径以防出现跨域问题,可以使用一下代码对iframe中的pdf路径进行预测试:

Utils.js

var Utils = {
  //展示文件类的页面
  showFilePage: function(fileName) {
    if (fileName.indexOf('.pdf') > -1) {
      var s = window.location.host + '/test/pdf/pdfURL=' + fileName;
      if (!s.indexOf('http') > -1) {
        s = 'http://' + s;
      }
      Utils.tetPage(s).then(function(){
        window.location.href = s;
      },
      function(){
        Utils.errorPage('文件不存在,请联系后台管理员!');
      });
    }
  }
  //预测试文件类页面
  tetPage: function(url) {
    return $.ajax({
      type: "GET",
      cache: false,
      url: url,
      data: "",
      success: function() {
        console.log('1')
      },
      error: function() {
        console.log('2')
      }
    });
  }
}

某个业务模块的pdf展示页面:
newDetails.js

Utils.showFilePage(pdfName);


点击QQ咨询
开通会员
返回顶部
×
  • 微信支付
微信扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
确定支付下载