<template>
<div id="div_read_area_scrool" class="no-scrollbar--x" :style="'text-align:center;height:'+ '500px;'+'overflow: auto;'">
<div id="div_read_area"></div>
</div>
</template>
<script>
// 参数:the-document={}
// 属性:
import pdfjsLib from 'pdfjs-dist'
import $ from 'jquery'
export default {
name: 'ReadByPdf',
data () {
return {
theReadOnline: {
current: 1,
numPages: 0,
html: ''
}
}
},
methods: {
// 初始化pdfjs
initThePDFJSLIB: function () {
pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdfjs-dist/build/pdf.worker.js'
},
// 根据页码获取pdf内容
loadPDFForTheDocument (index) {
// 实例化pdfjs
pdfjsLib.getDocument("/static/110.pdf").then(pdf => {
// 通过页码获取每页内容
pdf.getPage(index).then(page => {
// 获得总页数
this.theReadOnline.numPages = pdf.numPages
// 设置页面显示倍数 842×595
let _clientWidth = document.documentElement.clientWidth * 0.618
let view = _clientWidth % 842 > 0 ? 1.33 : 1
// 实例化画布
let canvas = document.createElement('canvas')
let context = canvas.getContext('2d')
let dpr = window.devicePixelRatio || 1
let bsr = context.webkitBackingStorePixelRatio ||
context.mozBackingStorePixelRatio ||
context.msBackingStorePixelRatio ||
context.oBackingStorePixelRatio ||
context.backingStorePixelRatio || 1
let ratio = dpr / bsr
let viewport = page.getViewport(view)
canvas.width = viewport.width * ratio
canvas.height = viewport.height * ratio
// canvas.style.width = viewport.width + 'px'
// canvas.style.height = viewport.height + 'px'
// context.setTransform(ratio, 0, 0, ratio, 0, 0)
let renderContext = {
canvasContext: context,
viewport: viewport
}
// 追加上新的一页空间
document.getElementById('div_read_area').appendChild(canvas)
// 赋值上显示内容
page.render(renderContext).then(() => {
})
})
}).catch(err => {
console.log(err)
})
},
watchTheReadScroll: function () {
let _theVue = this
// 获取节点
let _scrollContent = document.getElementById('div_read_area_scrool')
// 绑定事件
_scrollContent.addEventListener('scroll', function () {
var viewH, contentH, scrollTop
viewH = $(this).height()
contentH = $(this).get(0).scrollHeight
scrollTop = $(this).scrollTop()
// 后期改成传递给父级
if (scrollTop / (contentH - viewH) >= 1) { // 到达底部时,加载新内容
_theVue.theReadOnline.current++
if (_theVue.theReadOnline.current <= _theVue.theReadOnline.numPages) {
_theVue.loadPDFForTheDocument(_theVue.theReadOnline.current)
}
}
})
}
},
mounted: function () {
this.initThePDFJSLIB()
this.watchTheReadScroll()
this.loadPDFForTheDocument(1)
}
}
</script>
分享到:
相关推荐
在实际应用中,PDF.js可以轻松集成到各种Web项目中,如CMS系统、在线文档阅读平台等。开发者可以通过配置选项来调整其行为,如设置默认的缩放比例、启用或禁用GPU加速等。此外,PDF.js还提供了丰富的API,可以用来...
后台WebAPI由C#语言开发,集成在力软框架的后端源代码中。 APP2.0的亮点功能包括: 1. **小程序支持**:用户可以绑定力软账号与微信、钉钉、支付宝的小程序账号,实现一键登录。 2. **工作流分享**:工作流程可以...
同时,根据项目需求,可能需要对PDF.js进行定制化开发,例如调整默认样式、增加自定义控件,或者与其他前端框架(如React、Vue、Angular等)进行集成。 总之,PDF.js资源包为前端开发者提供了一种强大的工具,使得...
它支持多种浏览器,包括Chrome、Firefox、Safari、Edge等,并且可以无缝集成到Vue.js等现代JavaScript框架中。 在前端开发中,处理PDF文件通常是个挑战,因为浏览器的原生支持有限。PDF.js通过提供一套完整的API和...
在本案例中,我们讨论的是将PDF.js集成到uniapp中的方法,uniapp是一个跨平台的移动应用开发框架,基于Vue.js,用于构建iOS、Android、H5等平台的应用。 首先,为了在uniapp项目中使用PDF.js,你需要将`pdfjs25`...
8. **Vue.js 集成**:如果你的项目是基于 Vue.js 构建的,你可以利用 Vue 插件或者自定义 Vue 组件来整合 PDF.js,从而在 Vue 应用中轻松实现 PDF 查看功能。 总的来说,PDF.js 提供了一套完整的解决方案,让开发者...
- **自定义集成**:PDF.js可以轻松地与现有的Web应用程序集成,提供灵活的API和配置选项。 2. **使用步骤**: - **引入库**:首先,需要在HTML文件中引入PDF.js的库文件,通常包括`pdf.js`和`pdf.worker.js`。 -...
PDF(Portable Document Format)是一种广泛使用的文件格式,用于在各种操作系统和硬件平台之间共享文档,保持原始...在实际应用中,还可以结合其他前端框架和库,如React、Vue或Angular,进行更复杂的集成和功能扩展。
- **PDFViewer组件**:PDFViewer通常是一个自定义的React组件或者Vue组件,它负责集成PDF.js库并处理与用户交互相关的逻辑,如翻页、缩放、打印等。 3. **打印功能实现** - **PDF.js支持打印**:PDF.js库提供了...