<template>
<div class="mainBody">
<!-- <div v-if="isLoading" class="loading">loading</div> -->
<div v-if="isLoading" class="mask">
<loading size="24px" vertical>加载中...</loading>
</div>
<div class="main-content">
<div class="downLoad" @click="downLoad">点我下载</div>
<pdf
v-for="i in numPages"
:key="i"
:src="src" // promise对象
:page="i"
class="pdfItem"
@page-loaded="pageLoaded"
/>
</div>
</div>
</template>

  

  

<script>
import pdf from 'vue-pdf/src/vuePdfNoSssNoWorker'
import { mapActions } from 'vuex'
import { Loading } from 'vant'
export default {
name: 'PdfPreview',
components: { pdf, Loading },
data() {
return {
src: null, // promise对象
srcUrl: '', // 原始pdf的路径
numPages: undefined, // pdf的总页数
isLoading: true // 是否加载中
}
},
created() {
// 获取pdf的路径 将pdf的路径赋值给src
this.srcUrl = decodeURIComponent(this.$route.params.pdfUrl)
},
activated() {
this.setTitle()
},
mounted() {
// this.src = pdf.createLoadingTask('http://file.dakawengu.com/file/2018-05-29/20180527-tianfeng.pdf')
this.src = pdf.createLoadingTask(this.srcUrl) // src是一个promise对象
this.src.then(pdf => {
this.numPages = pdf.numPages
})
},
methods: {
...mapActions(['setHeader']),
setTitle() { // 设置标题
this.setHeader({
title: 'pdf预览',
leftOpt: {
preventBack: true
},
leftClick: () => {
this.backHome()
}
})
},
backHome() {
this.$router.go(-1)
},
downLoad() {
window.open(this.srcUrl) // 点击下载的时候,浏览器打开pdf
},
// 核心代码 等pdf页数加载完成的时候,隐藏加载框
pageLoaded(num) {
if (num === this.numPages) {
this.isLoading = false
}
}
}
}
</script> <style lang="scss" scoped>
.mainBody {
min-height: 100vh;
background: #eeeeee;
position: relative;
}
.pdfItem {
background: #ffffff;
// margin: .15rem;
}
// 加载框
.mask {
width: 100vw;
height: 100%;
position: relative;
.van-loading {
position: absolute;
left: 50%;
top:50%;
transform: translate(-50%,-50%);
}
}
.main-content {
margin: 0 .2rem .2rem .2rem;
/deep/ span {
margin-bottom: .2rem;
}
.downLoad {
padding-right: 0.4em;
font-size: .3rem;
font-weight: bold;
line-height: 0.4rem;
text-align: right;
}
} </style>

  

 

 

 

  

  

PDF  [ˌpiː diː ˈef]  详细X
基本翻译
n. 可移植文档格式(Portable Document Format)
abbr. 概率密度函数(Probability Density Function)
网络释义
PDF: 可移植文档格式
pdf zilla: 限时免费中
PDF Converter: PDF转换器

移动端pdf预览---vue-pdf的更多相关文章

  1. pdf预览(pdf.js)

    开门见山,pdf.js是Mozilla(缩写MF或MoFo)全称Mozilla基金会,下面的插件.现在社区非常活跃. Mozilla是为支持和领导开源的Mozilla项目而设立的一个非营利组织 下载地 ...

  2. 用pdf.js实现在移动端在线预览pdf文件

    用pdf.js实现在移动端在线预览pdf文件1.下载pdf.js    官网地址:https://mozilla.github.io/pdf.js/ 2.配置    下载下来的文件包,就是一个demo ...

  3. Pdf预览功能实现(asp.net)

    asp.net中使用 1.pdf预览功能实现的插件是pdfjs-1.5.188-dist //引入插件中相关的文件以及jquery文件 @section css{ <link rel=" ...

  4. Android原生PDF功能实现:PDF阅读、PDF页面跳转、PDF手势伸缩、PDF目录树、PDF预览缩略图

    1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开发的 ...

  5. Office在线预览及PDF在线预览的实现方式史上最全大集合

    Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPD ...

  6. Office在线预览及PDF在线预览的实现方式大集合

    一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...

  7. java原装代码完成pdf在线预览和pdf打印及下载

    这是我在工作中,遇到这样需求,完成需求后,总结的成果,就当做是工作笔记,以免日后忘记,当然,能帮助到别人是最好的啦! 下面进入正题: 前提准备: 1. 项目中至少需要引入的jar包,注意版本: a)  ...

  8. 浏览器实现PDF预览

    1.使用jquery.media.js预览PDF <!DOCTYPE html> <html> <head> <meta charset="utf- ...

  9. Office在线预览及PDF在线预览的实现方式

    原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...

  10. PDF预览之PDFObject.js总结

    get from:PDF预览之PDFObject.js总结   PDFObject.js - 将PDF嵌入到一个div内,而不是占据整个页面(要求浏览器支持显示PDF,不支持,可配置PDF.js来实现 ...

随机推荐

  1. 20202411 2020-2021-2 《Python程序设计》实验一报告

    20202411 2020-2021-2 <Python程序设计>实验一报告 课程:<Python程序设计> 班级: 2024 姓名: 陈书桓 学号:20202411 实验教师 ...

  2. 2020-2021第一学期2024"DCDD"小组第十二周讨论

    2020-2021第一学期"DCDD"第十二周讨论 这次不同的是,先来一个密文吧: 53fd95b7c2bd8c1383cdcbf5b04e3880 求解! 小组名称:DCDD 小 ...

  3. kubectl使用方法及常用命令小结

    Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令.kubectl 在 $HOME/.kube 目录中寻找一个名为 config 的文件. kubectl安装方法详见:htt ...

  4. 类继承(c++ primer plus)课后习题

    第一题: // base class class Cd { // represents a CD disk private: char performers[50]; char label[20]; ...

  5. Linux查看进程调用接口跟踪命令strace

    sudo strace -f -p 9022 -e connect

  6. 用bcftools将多个vcf文件合并成一个vcf文件 或将多个vcf和合并成的vcf文件拆分成单个样本的vcf文件

    1. 软件的安装 a. bcftools 的安装 b. bgzip的安装: https://blog.csdn.net/weixin_30471065/article/details/95108525 ...

  7. spring中.xml配置文件头部

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. rgb变为灰度图像

    close all;clc; x = imread('C:\timg.jpg'); %读取rgb图片信息I = rgb2gray(x);%将rgb图像转化为灰度图像 set(0,'defaultFig ...

  9. 接口自动化-requests环境安装(import requests模块引用失败问题)

    命名规范,可以避免低级问题 1. 命名最好是英文字符.下划线.数字三个组成. 2.项目(工程)名称.文件包名.模块名称等都应该是用英文开头,不能纯数字,(下划线开头的一般有特殊含义,不懂的话别乱用) ...

  10. 【原创】freetype android交叉编译

    项目中Opencv需要显示中文,由于本身并不支持,所以需要借助第三方的库freetype来实现.这个库虽然android本身也有使用,但并没有暴露接口给外部使用. freetype官网 方式1 脚本编 ...