pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。
-
注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决。
-
svg模式渲染存在缺陷,只能渲染普通pdf,带签名、印章的可能会渲染不全,报错,pdf.js官方目前没有给出解决方案
-
canvas模式本质是图片,默认进去的时候,图片在手机端被缩放,不是原分辨率,所以失真模糊。所以需要放大查看pdf
使用示例:
HTML(使用中)
一、script标签引入方式(需下载本项目文件夹css/pdfh5.css、js内所有文件)
- 1.引入css
<link rel="stylesheet" href="css/pdfh5.css" />
- 2.创建div
<div id="demo"></div>
- 3.依次引入js(需引用本项目的js,不要引用官方的pdf.js,jquery可以引用其它版的)
<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-2.1.1.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/pdfh5.js" type="text/javascript" charset="utf-8"></script>
- 4.实例化
var pdfh5 = new Pdfh5('#demo', { pdfurl: "网络地址" });
二、npm安装方式(适应于vue), react使用方法类似vue(example/react-test是react使用示例)
- 1.安装
npm install pdfh5
- 2.使用
<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>
- 注意:如果css引用报错的话,按下面的方式引用。
import Pdfh5 from "pdfh5";
import "pdfh5/css/pdfh5.css";
异常问题汇总:
1、移动端设置meta ,否则影响展示
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
2、协议不一致(https、http),导致报错
3、跨域异常
https://github.com/mozilla/pdf.js 作为请求资源,受到外层浏览器局限,允许该资源在当前域名下使用,此时设置跨域请求,需要配置跨域请求,
如果:1、pdf地址在服务,需要服务器配置,该pdf请求地址 允许在该域名下访问
2、在OSS 需要配置,请求域名为* 所有域名都可以请求;
Response Headers
access-control-allow-origin: *