<style scoped>
canvas {
display: block;
}
.grey {
color: #ddd;
}
.turn {
cursor: pointer;
}
</style>
<template>
<div class="f-c h-f">
<div class="f-a-c f-j-b o-p-s">
<div class="f-a-c f-j-c f-1">
<span
@click="currentPage == 1 ? '' : getPage(currentPage - 1)"
class="turn o-plr"
:class="{ grey: currentPage == 1 }"
>上一页</span
>
{{ currentPage }} / {{ pageCount }}
<span
@click="currentPage == pageCount ? '' : getPage(currentPage + 1)"
class="turn o-plr"
:class="{ grey: currentPage == pageCount }"
>下一页</span
>
<input
class="o-mlr bd-r-4 bd-f bd-c-e"
style="outline: none; width: 60px"
type="text"
v-model="currentP"
@confirm="inputPage"
@change="inputPage"
/>
</div>
<div>
<a class="o-plr-s" :href="pdfUrl">下载</a>
</div>
</div>
<div class="f-1 p-re" style="overflow-y:scroll;">
<div id="mycanvas" class="w-f" ref="mycanvas" :data-pdfUrl="pdfUrl"></div>
</div>
</div>
</template>
<script>
import pdf from './pdf'
export default {
name: 'pdf',
data() {
return {
currentPage: 1,
pageCount: 1,
pdfObj: {},
currentP: '',
pdfUrl: '',
}
},
methods: {
inputPage() {
console.log('inputPage ---', this.currentP)
if (1 <= this.currentP && this.currentP <= this.pageCount) {
this.getPage(parseInt(this.currentP))
} else {
this.currentP = ''
}
},
getPage(pageNumber) {
this.currentPage = pageNumber
//获取pdf
let _this = this
let pdf = this.pdfObj
let container = document.getElementById('mycanvas')
pdf.getPage(pageNumber).then((page) => {
let scale = container.offsetWidth / page.view[2]
let viewport = page.getViewport(scale)
let canvas = document.createElement('canvas')
canvas.width = viewport.width
canvas.height = viewport.height
container.innerHTML = ''
container.appendChild(canvas)
let ctx = canvas.getContext('2d')
var renderContext = {
canvasContext: ctx,
transform: [1, 0, 0, 1, 0, 0],
viewport: viewport,
intent: 'print',
}
page.render(renderContext).then(() => {})
})
},
preview(url) {
console.log('preview ---', url)
this.pdfUrl = url
let pdfjsLib = pdf
pdfjsLib.PDFJS.workerSrc = './pdf.worker.js'
let loadingTask = pdfjsLib.getDocument(url)
loadingTask.promise.then(
(res) => {
console.log('getPdf ---loadingTask res', res)
this.pageCount = res.numPages
this.pdfObj = res
this.getPage(1)
},
function (reason) {
console.log('preview ---loadingTask reason', reason)
}
)
},
},
}
</script>
pdf预览
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Awesome Ruby Toolbox Awesome A collection of awesome Ruby...
- 注意:这个插件主要使用的是vue的Vue-Awesome-Swiper轮播插件.使用这个插件之前需要: 1.npm...
- General New Features Xcode 11 beta supports development w...
- 自学python的数据分析,爬虫后,花了几天时间学习Flask做了一个简单的股票查询网页。本想着加入其它的分析板...