广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3+Vue-PDF实现PDF文件在线预览实战
  • 326
分享到

Vue3+Vue-PDF实现PDF文件在线预览实战

2024-04-02 19:04:59 326人浏览 八月长安
摘要

目录概述项目实战创建 vue3 项目添加 pdf 预览插件概述 今天我们用 Vue3 + Vue-PDF 实现 Vue 版

概述

今天我们用 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 expose
  ready in 780ms.

按住 control/command + 鼠标左键,项目在浏览器中打开了

项目启动成功

添加 PDF 预览插件

项目启动成功后,我们安装 PDF 预览插件

pnpm install vue-pdf-embed
pnpm install vue3-pdfjs

我们在 src 下新建一个文件 src/components/pdfPreview.vue,添加一些代码,初始化 vue-pdf 预览,代码如下

<template>
    <div class="pdf-preview">

    </div>
</template>
<script setup lang="ts">
import { Reactive, onMounted, computed } from "vue";

const props = defineProps({
    pdfUrl: {
        type: String,
        required: true
    }
})
onMounted(() => {
});
</script>
<style lang="CSS" scoped>
.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;
}
</style>

添加完成后,我们将 PDF 预览组件引入到 App.vue 文件中,并将提前准备的 PDF 文件也引入,如下所示:

<template>
<div>
    <PDFView :pdfUrl="jsPdf" />
</div>
</template>
<script setup lang="ts">
import PDFView from "./components/pdfPreview.vue"
import jsPdf from "./javascript.pdf"
</script>

接下来我们回到刚刚新建的 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中加入预览插件代码:

 <div class="pdf-wrap">
     <vue-pdf-embed :source="state.source"  :style="scaleFun" class="vue-pdf-embed" :page="state.pageNum" />
</div>

打开浏览器,可以看到 PDF 文件已经加载出来了,但是样式不是很好看,我们下一步将样式优化下,并将 PDF 文件的翻页功能,缩放功能,当前页面/总页数展示功能添加完善

添加如下代码到 tempate 中

<div class="page-tool">
    <div class="page-tool-item" >上一页</div>
    <div class="page-tool-item">下一页</div>
    <div class="page-tool-item">{{state.pageNum}}/{{state.numPages}}</div>
    <div class="page-tool-item" >放大</div>
    <div class="page-tool-item">缩小</div>
</div>

美化样式:

.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

<div class="page-tool-item" @click="lastPage">上一页</div>
<div class="page-tool-item" @click="nextPage">下一页</div>
<div class="page-tool-item">{{state.pageNum}}/{{state.numPages}}</div>
<div class="page-tool-item" @click="pageZoomOut">放大</div>
<div class="page-tool-item" @click="pageZoomIn">缩小</div>

到此这篇关于Vue3 + Vue-PDF 实现PDF 文件在线预览实战的项目就做完了,更多相关vue3 文件在线预览内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue3+Vue-PDF实现PDF文件在线预览实战

本文链接: https://www.lsjlt.com/news/150701.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3+Vue-PDF实现PDF文件在线预览实战
    目录概述项目实战创建 vue3 项目添加 PDF 预览插件概述 今天我们用 Vue3 + Vue-PDF 实现 Vue 版...
    99+
    2022-11-13
  • Vue3+Vue-PDF怎么实现PDF文件在线预览
    创建 vue3 项目我们先创建一个的 Vue3 项目, 在终端中输入命令pnpm create vite vue-pdf-preview选择 vue-ts 回车,cd 进入项目根目录,执行 pnpm install, 等待项目依赖包安装完成...
    99+
    2023-05-14
    PDF Vue3
  • Vue-pdf实现在线预览PDF文件
    前言 在大多数项目中都会遇到在线预览PDF文件,项目使用的是element ui,使用vue-pdf实现。 安装依赖 npm install --save vue-pdf 相关...
    99+
    2022-11-12
  • 如何使用Vue3+Vue-PDF实现PDF文件在线预览
    这篇文章主要介绍“如何使用Vue3+Vue-PDF实现PDF文件在线预览”,在日常操作中,相信很多人在如何使用Vue3+Vue-PDF实现PDF文件在线预览问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使...
    99+
    2023-07-06
  • vue-pdf实现文件在线预览
    本文实例为大家分享了vue-pdf实现文件在线预览的具体代码,供大家参考,具体内容如下 提示:记录一下vue-pdf使用方法,避免忘记,便于后面使用 前言 提示:以下是本篇文章正文内...
    99+
    2022-11-12
  • vue3如何实现PDF文件在线预览功能
    目录概述正文创建 vue3 项目添加 PDF 预览插件总结概述 之前我们用 Reactjs + React-PDF 实现了 React 版的 PDF 文件预览,今天我们用 Vue3 ...
    99+
    2022-11-13
  • Vue怎么使用vue-pdf实现PDF文件预览
    这篇文章主要介绍了Vue怎么使用vue-pdf实现PDF文件预览的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue怎么使用vue-pdf实现PDF文件预览文章都会有所收获,下面我们一起来看看吧。先看下效果&n...
    99+
    2023-07-05
  • Vue实现docx、pdf格式文件在线预览功能
    目录介绍docx安装使用PDF安装引入和使用pdf的放大和缩小多格式的文件渲染函数映射不支持的文件提示处理总结介绍 在业务中,如果遇到文档管理类的功能,会出现需要在线预览的业务需求,...
    99+
    2022-11-13
  • vue如何实现在线预览PDF文档功能
    这篇文章主要介绍了vue如何实现在线预览PDF文档功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何实现在线预览PDF文档功能文章都会有所收获,下面我们一起来看看吧。下面通过一个实例来介绍在Vue.j...
    99+
    2023-07-05
  • 前端实现docx、pdf格式文件在线预览
    介绍在业务中,如果遇到文档管理类的功能,会出现需要在线预览的业务需求,本文主要是通过第三方库来实现文档预览功能,并将其封装成preview组件docxdocx的实现需要使用docx-preview插件安装npm i do...
    99+
    2022-11-22
    docx pdf 预览
  • Vue实现在线预览pdf文件功能(利用pdf.js/iframe/embed)
    前言 最近在做一个精品课程,需要在线预览课件ppt,我们的思路是将ppt转换为pdf在线预览,所以问题就是如何实现在线预览pdf了。 在实现的过程中,为了更好地显示效果,我采用了多...
    99+
    2022-11-12
  • 怎么使用vue-pdf插件实现pdf文档预览功能
    这篇文章主要介绍了怎么使用vue-pdf插件实现pdf文档预览功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用vue-pdf插件实现pdf文档预览功能文章都会有所收获,下面我们一起来看看吧。vue-p...
    99+
    2023-07-05
  • 使用Vue3+PDF.js实现PDF预览功能
    目录1 前言2 PDF 预览测试2.1 下载 PDF.js2.2 window.open 直接打开2.3 弹框形式打开3 修改配置项3.1 修改主题色为暗色系3.2 修改默认语言为简...
    99+
    2022-12-24
    vue使用pdf.js vue3.0 pdf vue pdf 预览
  • Office在线预览及PDF在线预览的实现方式大集合
    一、服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成sw...
    99+
    2023-08-31
    php word excel pdf
  • vue预览pdf、word、xls、ppt、txt文件的实现方法
    目录说下方法1. 在页面内加个 iframe2. word、xls、ppt这些文件3. 最终效果首先说下为什么要分享:网上教的都是特么的啥玩意!!!真特么垃圾,各种方法说不到点子上!...
    99+
    2022-11-13
  • Vue实现docx/xlsx/pdf等类型文件预览功能
    目录使用安装使用示例docx文档的预览excel文档预览pdf文档预览都2023年了,怎么文件预览还这么难! 发现了问题之后,就想着能不能实现一个简单的VUE组件库,能够解决以上问题...
    99+
    2023-02-13
    Vue docx文件预览 Vue xlsx文件预览 Vue pdf文件预览 Vue文件预览
  • 如何在vue中使用pdfjs预览pdf文件
    目录前言 思考 库目录解析和下载 使用方法 文件位置 实际调用 问题 总结 前言 在写项目的过程中,偶尔会有使用到pdf的文件,当我们想看pdf文件的时候,你的操作是不是先把pdf...
    99+
    2022-11-12
  • Vue怎么使用pdfobject实现预览pdf
    本篇内容主要讲解“Vue怎么使用pdfobject实现预览pdf”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue怎么使用pdfobject实现预览pdf”吧!安装 pnpm add...
    99+
    2023-07-05
  • Java实现PDF在线预览功能(四种方式)
    目录Java实现PDF在线预览Java快捷实现PDF在线预览Java实现PDF在线预览 @RequestMapping("/preview1") public v...
    99+
    2022-11-12
  • 如何使用PDF.JS插件实现在HTML中预览PDF文件
    这篇文章给大家分享的是有关如何使用PDF.JS插件实现在HTML中预览PDF文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PDF.js是一款基于HTML5建立的PDF阅读器,...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作