【Vue】vue2使用vue-pdf预览pdf文件,预览多页,在线预览方式二,vue页面内预览,无需额外pdfjs包,保姆级教程

系列文章目录

【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容
【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程
【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包打开新窗口预览pdf文件


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

参考文章1 vue中前端实现pdf预览(含vue-pdf插件用法)

参考文章2 vue中运用vue-pdf实现pdf分页预览及缩放(可解决pdf预览不清晰问题)

可以先看参考文章,再来看我的,这个作者的简洁粗暴,上手就能用,我写的主要针对新手小白

但是只做了预览,如果需要切换上一页、下一页,请看参考2


提示:以下是本篇文章正文内容,下面案例可供参考

一、下载vue-pdf

官网地址传送门

js 复制代码
npm install vue-pdf -S

二、使用步骤

1.创建页面

我需要一个vue页面来预览文件,同时,参数是通过url地址传进来的。

在views下建一个文件夹名叫viewPDF

2.配置路由

代码如下(示例):

js 复制代码
  {
    path: '/viewPDF',
    name: 'viewPDF',
    component: () => import('../views/viewPDF/index.vue'),
    meta: {
      title: "预览pdf文件"
    },
  }

示例路径如下

http://192.168.0.6:9000/viewPDF?filePath=你的文件路径

我的文件路径是
/profile/upload/2023/09/12/制药工程综合实验讲义_20230912100721A002.pdf


在路径上,不需要去拼接/dev-api

这个拼接的事,放在这个页面中去做

3. 编写页面(默认多页面)

由于代码简单,不拆分了
直接粘贴替换全部就好了

html 复制代码
<template>
    <div>
        <pdf v-for="i in numPages" :key="i" :src="pdfUrl" :page="i">
        </pdf>
    </div>
</template>

<script>
import pdf from 'vue-pdf'
export default {
    name: "vinit",
    components: {
        pdf
    },
    data() {
        return {
            pdfUrl: '',
            numPages: undefined,
        }
    },
    computed: {
        // 当前页面链接 http://192.168.0.6:9000/viewPDF?filePath=测试.pdf
        // return http://192.168.0.6:9000
        trimmedUrl() { 
            // 完整的URL
            const fullUrl = window.location.href;

            // 使用URL对象来解析URL
            const urlObject = new URL(fullUrl);

            // 获取截取后的域名和端口号部分
            const trimmedUrl = `${urlObject.protocol}//${urlObject.host}`;

            return trimmedUrl;
        }
    },
    watch: {},
    filters: {},
    created() {
    },
    mounted() {
        this.getTotal()
    },
    methods: {
        // 获取pdf总页数
        getTotal() {
            // 多页pdf的src中不能直接使用后端获取的pdf地址 否则会按页数请求多次数据
            let loadingTask = this.trimmedUrl + process.env.VUE_APP_BASE_API + this.$route.query.filePath
            // 需要使用下述方法的返回值作为url
            this.pdfUrl = pdf.createLoadingTask(loadingTask)
            // 获取页码
            this.pdfUrl.promise.then(pdf => {
                this.numPages = pdf.numPages;
            }).catch(error => {

            })
        }
    },
}
</script>

4. 单页pdf预览

基础用法


总结

更多方法看官网 传送门

相关推荐
幼儿园技术家6 分钟前
前端如何设计权限系统(RBAC / ABAC)?
前端
前端摸鱼匠2 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker2 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
donecoding4 小时前
一个 sudo 引发的血案:npm 全局包权限错乱彻底修复
前端·node.js·前端工程化
风骏时光牛马4 小时前
Raku正则匹配与数据批量处理实操案例
前端
nbwenren4 小时前
2026实测:Gemini 3 镜像站视觉能力实践——拍照原型图,一键生成 HTML+CSS 代码
前端·css·html
Lee川4 小时前
Prisma 实战指南:像搭积木一样设计古诗词数据库
前端·数据库·后端
jinanwuhuaguo4 小时前
(第二十九篇)OpenClaw 实时与具身的跃迁——从异步孤岛到数字世界的“原住民”
前端·网络·人工智能·重构·openclaw
广州华水科技4 小时前
深度测评2026年单北斗GNSS位移监测系统推荐,与高口碑变形监测设备一同引领行业新风尚
前端