Vue3|Vue3 + Vue-PDF 实现PDF 文件在线预览实战
目录
- 概述
- 项目实战
- 创建 vue3 项目
- 添加 PDF 预览插件
概述 今天我们用
Vue3 + Vue-PDF
实现 Vue 版本的 PDF 文件在线预览功能。我们先来看看完成后效果:
项目实战
创建 vue3 项目
我们先创建一个的
Vue3
项目, 在终端中输入命令pnpm create vite vue-pdf-preview
选择
vue-ts
回车,cd 进入项目根目录,执行 pnpm install
, 等待项目依赖包安装完成。项目依赖包安装完成后,我们来启动项目, 执行命令
pnpm run dev
,可以看到控制台输入出了如下内容vite v2.9.9 dev server running at:> Local: http://localhost:3000/> Network: use `--host` to exposeready in 780ms.
按住 control/command + 鼠标左键,项目在浏览器中打开了
文章图片
项目启动成功
添加 PDF 预览插件
项目启动成功后,我们安装 PDF 预览插件
pnpm install vue-pdf-embedpnpm install vue3-pdfjs
我们在
src
下新建一个文件 src/components/pdfPreview.vue
,添加一些代码,初始化 vue-pdf
预览,代码如下.pdf-preview {position: relative; height: 100vh; padding: 20px 0; box-sizing: border-box; background: rgb(66, 66, 66); }.vue-pdf-embed {text-align: center; width: 515px; border: 1px solid #e5e5e5; margin: 0 auto; box-sizing: border-box; }
添加完成后,我们将 PDF 预览组件引入到
App.vue
文件中,并将提前准备的 PDF 文件也引入,如下所示:接下来我们回到刚刚新建的 PDF 预览组件页面,来完善预览功能
我们先引入 PDF 预览插件:
import VuePdfEmbed from "vue-pdf-embed"; import { createLoadingTask } from "vue3-pdfjs/esm"; // 获得总页数
使用 vue3 的
reactive
定义一些页数,页码,PDF文件预览地址变量const state = reactive({source: props.pdfUrl, 预览pdf文件地址pageNum: 1, 当前页面scale: 1, // 缩放比例numPages: 0, // 总页数});
在
OnMounted
钩子函数中使用createLoadingTask 获取下 预览文件的总页数const loadingTask = createLoadingTask(state.source); loadingTask.promise.then((pdf:{numPages: number}) => {state.numPages = pdf.numPages; });
在template中加入预览插件代码:
打开浏览器,可以看到 PDF 文件已经加载出来了,但是样式不是很好看,我们下一步将样式优化下,并将 PDF 文件的翻页功能,缩放功能,当前页面/总页数展示功能添加完善
添加如下代码到 tempate 中
上一页下一页{{state.pageNum}}/{{state.numPages}}放大缩小
美化样式:
.pdf-preview {position: relative; height: 100vh; padding: 20px 0; box-sizing: border-box; background-color: e9e9e9; }.pdf-wrap{overflow-y:auto ; }.vue-pdf-embed {text-align: center; width: 515px; border: 1px solid #e5e5e5; margin: 0 auto; box-sizing: border-box; }.page-tool {position: absolute; bottom: 35px; padding-left: 15px; padding-right: 15px; display: flex; align-items: center; background: rgb(66, 66, 66); color: white; border-radius: 19px; z-index: 100; cursor: pointer; margin-left: 50%; transform: translateX(-50%); }.page-tool-item {padding: 8px 15px; padding-left: 10px; cursor: pointer; }
添加文件的翻页功能,缩放功能,当前页面/总页数展示功能添加完善
const scale = computed(() => `transform:scale(${state.scale})`)function lastPage() {if (state.pageNum > 1) {state.pageNum -= 1; }}function nextPage() {if (state.pageNum < state.numPages) {state.pageNum += 1; }}function pageZoomOut() {if (state.scale < 2) {state.scale += 0.1; }}function pageZoomIn() {if (state.scale > 1) {state.scale -= 0.1; }}
tempalte
上一页下一页{{state.pageNum}}/{{state.numPages}}放大缩小
【Vue3|Vue3 + Vue-PDF 实现PDF 文件在线预览实战】到此这篇关于Vue3 + Vue-PDF 实现PDF 文件在线预览实战的项目就做完了,更多相关vue3 文件在线预览内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JS实现将数据导出到Excel的方法详解
- #私藏项目实操分享# 实现LVS+keepalived高可用集群
- 基于Vue3最新标准,实现后台前端综合解决方案
- lrzsz安装lrzsz工具实现Linux和Windows系统之间文件便捷上传与下载
- redis|Redis实现登录注册
- java|SpringBoot集成shiro+shiro-redis实现登录、授权访问和多端登录控制
- redis实战|使用redis实现登录token的需求
- redis|redis实现登录
- #私藏项目实操分享#如何利用 onlyoffice 实现文档格式转换
- Python如何实现图像强度转换操作()