由于精力有限,本插件暂时不会更新了,如果有问题可以到博客留言并留下联系方式,抽空回复
2021.10.08 更新: 修复一些bug,新增下载pdf方法pdfh5.download("xx.pdf",function(){})
pdfh5在线预览 (建议使用谷歌浏览器F12手机模式打开预览)
一、script标签引入方式(需下载本项目文件夹css/pdfh5.css、js内所有文件)
< link rel = "stylesheet" href = "css/pdfh5.css" />
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 >
var pdfh5 = new Pdfh5 ( '#demo' , {
pdfurl : "./default.pdf"
} ) ;
二、npm安装方式(适应于vue), react使用方法类似vue(example/react-test是react使用示例)
< 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 )
} )
}
}
< / s c r i p t >
< style >
@import "pdfh5/css/pdfh5.css";
*{
padding : 0 ;
margin : 0 ;
}
html,body,#app {
width : 100 % ;
height : 100 % ;
}
</ style >
import Pdfh5 from "pdfh5" ;
import "pdfh5/css/pdfh5.css" ;
pdfh5实例化的时候传两个参数,selector选择器,options配置项参数,会返回一个pdfh5实例对象,可以用来操作pdf,监听相关事件
var pdfh5 = new Pdfh5 ( selector , options ) ;
参数名称
类型
取值
是否必须
作用
selector
String
-
√
pdfh5的容器选择器
options
Object
-
×
pdfh5的配置项参数
var pdfh5 = new Pdfh5 ( '#demo' , {
pdfurl : "./default.pdf"
} ) ;
参数名称
类型
取值
作用
pdfurl
String
-
pdf地址
URIenable
Boolean
true、false, 默认false
true开启地址栏file参数
data
Array(arraybuffer)
-
pdf文件流 ,与pdfurl二选一(二进制PDF数据。使用类型化数组(Uint8Array)可以提高内存使用率。如果PDF数据是BASE64编码的,请先使用atob()将其转换为二进制字符串。)
renderType
String
"canvas"、"svg",默认"canvas"
pdf渲染模式
pageNum
Boolean
true、false, 默认true
是否显示左上角页码
backTop
Boolean
true、false, 默认true
是否显示右下角回到顶部按钮
lazy
Boolean
true、false, 默认false
是否开启懒加载(实际是延迟加载图片,即屏幕滚动到pdf位置时加载图片)
maxZoom
Number
最大倍数3
手势缩放最大倍数
scale
Number
最大比例5,默认1.5
pdf渲染的比例
scrollEnable
Boolean
true、false, 默认true
是否允许pdf滚动
zoomEnable
Boolean
true、false, 默认true
是否允许pdf手势缩放
cMapUrl
String
默认"https://www.gjtool.cn/cmaps/ "
解析pdf时,特殊情况下显示完整字体的cmaps文件夹路径,例如 cMapUrl:"https://unpkg.com/pdfjs-dist@2.0.943/cmaps/ "
limit
Number
默认0
限制pdf加载最大页数
logo
Object
{src:"pdfh5.png",x:10,y:10,width:40,height:40}src水印图片路径(建议使用png透明图片),width水印宽度,height水印高度,以每页pdf左上角为0点,x、y为偏移值。 默认false
给每页pdf添加水印logo(canvas模式下使用)
goto
Number
默认0
加载pdf跳转到第几页
textLayer
Boolean
true、false, 默认false
是否开启textLayer,可以复制文本(canvas模式下使用)【处于测试阶段,位置偏移严重】
background
Object
{color:"#fff",image:"url('pdfh5.png')",repeat:"no-repeat",position:"left top",size:"40px 40px"},和css的background属性语法相同,默认false
是否开启背景图模式
参数名称
类型
取值
作用
httpHeaders
Object
默认空
设置httpHeaders信息
withCredentials
Boolean
默认false
是否使用cookie或授权标头之类的凭据发出跨站点访问
password
String
默认空
用于访问有密码的PDF
stopAtErrors
Boolean
默认false
当无法成功解析关联的PDF数据时,停止解析
disableFontFace
Boolean
默认false
默认情况下,字体会转换为OpenType字体,并通过字体规则来加载。如果禁用,字体将使用内置的字体渲染器渲染。
disableRange
Boolean
默认false
禁用范围请求加载PDF文件。启用后,如果服务器支持部分内容请求,则将以块的形式获取PDF。
disableStream
Boolean
默认false
禁用流式传输PDF文件数据。默认情况下,PDF.js尝试加载成块的PDF。
disableAutoFetch
Boolean
默认false
禁用PDF文件数据的预取。启用范围请求后,即使不需要显示当前页面,PDF.js也会自动继续获取更多数据。默认值为“ false”。注意:还必须禁用流传输disableStream
$ . ajax ( {
url : "https://www.gjtool.cn/pdfh5/git.pdf" , //假设这是pdf文件流的请求接口
type : "get" ,
mimeType : 'text/plain; charset=x-user-defined' , //jq ajax请求文件流的方式
success : function ( data ) {
var pdfh5 = new Pdfh5 ( '#demo' , {
data : data
} ) ;
}
} ) ;
$ . ajax ( {
url : "https://www.gjtool.cn/pdfh5/git.pdf" , //假设这是pdf文件流的请求接口
type : "get" ,
mimeType : 'text/plain; charset=x-user-defined' , //jq ajax请求文件流的方式
success : function ( data ) {
var rawLength = data . length ;
var array = new Uint8Array ( new ArrayBuffer ( rawLength ) ) ;
for ( i = 0 ; i < rawLength ; i ++ ) {
array [ i ] = data . charCodeAt ( i ) & 0xff ;
}
var pdfh5 = new Pdfh5 ( '#demo' , {
data : array
} ) ;
}
} ) ;
$ . ajax ( {
url : "https://www.gjtool.cn/pdfh5/git.pdf" , //假设这是pdf文件流的请求接口
type : "get" ,
mimeType : 'text/plain; charset=x-user-defined' , //jq ajax请求文件流的方式
success : function ( data ) {
var rawLength = data . length ;
var array = [ ] ;
for ( i = 0 ; i < rawLength ; i ++ ) {
array . push ( data . charCodeAt ( i ) & 0xff ) ;
}
var pdfh5 = new Pdfh5 ( '#demo' , {
data : array
} ) ;
}
} ) ;
axios示例
axios . get ( "https://www.gjtool.cn/pdfh5/git.pdf" , {
responseType :"arraybuffer"
} ) . then ( res => {
this . pdfh5 = new Pdfh5 ( '#demo' , {
data : res . data
} ) ;
} )
base64码加载示例
let pdfBase64 = "adfxcvadfasdfxxxxx" ;
new Pdfh5 ( '#demo' , {
pdfurl : "data:application/pdf;base64," + pdfBase64 ,
} ) ;
pdfh5 . scrollEnable ( true ) //允许pdf滚动
pdfh5 . scrollEnable ( false ) //不允许pdf滚动
方法名
传参
传参取值
作用
scrollEnable
Boolean
true、false, 默认true
是否允许pdf滚动(需要在pdf加载完成后使用)
zoomEnable
Boolean
true、false, 默认true
是否允许pdf手势缩放(需要在pdf加载完成后使用)
show
Function
带一个回调函数
pdfh5显示
hide
Function
带一个回调函数
pdfh5隐藏
reset
Function
带一个回调函数
pdfh5还原
destroy
Function
带一个回调函数
pdfh5销毁
on
(String, Function)
String:监听的事件名,Function:监听的事件回调
on方法监听所有事件
goto
Number
Number:要跳转的pdf页数
pdf跳转到第几页(pdf加载完成后使用)
download
(String, Function)
String:下载pdf的名称,默认download.pdf,Function:下载完成后的回调
下载pdf
示例: 监听pdf准备开始渲染,此时可以拿到pdf总页数
pdfh5 . on ( "ready" , function ( ) {
console . log ( "总页数:" + this . totalNum )
} )
事件名
回调
作用
init
Function
监听pdfh5开始初始化
ready
Function
监听pdf准备开始渲染,此时可以拿到pdf总页数
error
Function(msg,time)
监听加载失败,msg信息,time耗时
success
Function(msg,time)
监听pdf渲染成功,msg信息,time耗时
complete
Function(status, msg, time)
监听pdf加载完成事件,加载失败、渲染成功都会触发。status有两种状态success和error
render
Function(currentNum, time, currentPageDom)
监听pdf渲染过程,currentPageDom当前加载的pdf的dom,currentNum当前加载的pdf页数,
zoom
Function(scale)
监听pdf缩放,scale缩放比例
scroll
Function(scrollTop,currentNum)
监听pdf滚动,scrollTop滚动条高度,currentNum当前页码
backTop
Function
监听回到顶部按钮的点击事件回调
zoomEnable
Function(flag)
监听允许缩放,flag:true,false
scrollEnable
Function(flag)
监听允许滚动,flag:true,false
show
Function
监听pdfh5显示
hide
Function
监听pdfh5隐藏
reset
Function
监听pdfh5还原
destroy
Function
监听pdfh5销毁
JayLin ¥6.66
靓仔城 ¥6.67
南蓝 ¥8.80
我是太阳 ¥29.99
*小波 ¥1.00
*鑫 ¥9.99
*手 ¥9.99
*勇 ¥19.99
*爷 ¥5.00
*超 ¥20.00
3*Y ¥5.00
*阳 ¥5.00
**雄 ¥5.00
A*r ¥1.23
*客 ¥5.00
*运 ¥66.66
*辰 ¥30.00
*黎 ¥6.66+¥5.00
**福 ¥6.66
*🏀 ¥6.66+¥1.00
*阳 ¥10.00
自闭中 ¥16.66+¥16.00
*焕 ¥6.66
*人 ¥5.00
*。 ¥5.20
半*) ¥5.00
*1 ¥15.00
*蕾 ¥16.66
*军 ¥10.00
**强 ¥58.88
E*y ¥6.60
J*u ¥13.00
A*a ¥50.00
*东 ¥8.80
j*y ¥9.99
*宇 ¥6.66
*涛 ¥1.00
*. ¥10.00
*☺ ¥6.66
*霸 ¥6.66
a*r ¥20.00