vue中预览pdf

情况一

如果后端返回的pdf地址,粘贴到浏览器的url框中,可以在浏览器中直接进行预览的,那么我们就用window.open,或 a标签,或iframe标签通过设置src进行预览即可

法1:可以直接使用window.open('获取到的pdf地址')重新打开一个浏览器页签

通过浏览器页签直接实现预览功能(预览页面的样式,根据浏览器的不同,会略有差异)

法2:使用iframe标签

<iframe :src="获取到的pdf预览地址></iframe>

法3:使用a标签,也可设置跳转一个新窗口

<a :href="获取到的pdf预览地址></a>

情况二

后端返回了服务器文件pdf的地址,粘贴到浏览器的url框中,无法在浏览器中直接进行预览或者是直接进行了下载,这种情况,上述方法解决不了,需要使用插件或者设置浏览器请求头的方式来解决

法1:使用vue-pdf进行预览

(1)安装:

npm install --save vue-pdf

(2)引入:在要使用的vue页面进行引入

import pdf from 'vue-pdf'

        并引入组件

 components: { pdf }

(3)使用:

       单页pdf可以直接使用

<pdf>:src="获取到的pdf地址"
</pdf>

       多页pdf通过循环实现

​
<pdfv-for="item in pageTotal":src="pdfUrl":key="item":page="item"
>
</pdf>

data中定义:

 data(){return{pageTotal: null,pdfUrl: "http://101.34.220.192:9000/emergency-response/integration/system_manual/RESOURCE1689663612812.pdf"}
}
    // 获取pdf总页数getTotal() {// 多页pdf的src中不能直接使用后端获取的pdf地址 否则会按页数请求多次数据// 需要使用下述方法的返回值作为urlthis.pdfUrl = pdf.createLoadingTask(this.pdfUrl)// 获取页码this.pdfUrl.promise.then(pdf => this.pageTotal = pdf.numPages).catch(error => {             })},

此时就可以正常预览:

 法2:不使用插件,使用get请求,修改请求头类型来实现

定义一个函数: 

        openPdf(url) {return new Promise((resolve, reject) => {let blob = null;let xhr = new XMLHttpRequest();xhr.open("GET", 'http://101.34.220.192:9000/emergency-response/integration/system_manual/RESOURCE1689663612812.pdf');xhr.responseType = "blob";xhr.onload = () => {blob = xhr.response;const blobob = new Blob([blob], { type: 'application/pdf;charset=utf-8' });const href = window.URL.createObjectURL(blobob);window.open(href, 'newWindow');resolve(file);};xhr.onerror = (e) => {reject(e)};xhr.send();});},

使用:

 <a href="" @click="openPdf('http://101.34.220.192:9000/emergency-response/integration/system_manual/RESOURCE1689663612812.pdf')" target="_blank">预览文档</a>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode100.相同的树

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;相同的树 1️⃣ 代码&#xff1a; bool isSameTree(struct TreeNode* p, struct TreeNode* q){// 判断两棵树当前结点是否为空if (p NULL && q NULL) {// 说明是相同的return true;}// 来到这里有几种情况// …

【实战篇】docker-compose部署go项目

一、场景&#xff1a; 二、需求 三、实操 Stage 1&#xff1a;GoLand 中 build 生成二进制文件 Stage 2&#xff1a;编写 Dockerfile Stage 3&#xff1a;编写 docker-compose.yaml Stage 4&#xff1a;文件上传到 ubuntu 服务器上&#xff0c;并设置文件读写权限 Stage…

前端 | (二)各种各样的常用标签 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 文章目录 &#x1f4da;HTML排版标签&#x1f4da;HTML语义化标签&#x1f4da;块级元素与行内元素&#x1f4da;文本标签&#x1f407;常用的文本标签&#x1f407;不常用的文本标…

Kubernetes Service的过程

文章目录 Kubernetes Service的实现基础内容1. 命令 ip route show table all2. DNAT3. IPVS和iptables4. Service Service的实现简述 Kubernetes Service的实现 基础内容 在了解Service之前,需要先了解一些额外的知识: 命令: ip route show table allDNATIPVS和iptables基础…

idea不小心push的文件夹怎么处理?

第一种方式&#xff0c;把不小心push上去的人解决掉。 第二种方式&#xff0c;以我自身为例&#xff0c;同事不小心push了.idea文件夹 首先打开git bash git rm --cached .idea/ -r 然后查看一下状态 git status 接着提交修改 git commit -m "cancel track .idea file&q…

【Redis】高可用之三:集群(cluster)

本文是Redis系列第6篇&#xff0c;前5篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xf…

Linux基础(三)端口、进程及主机状态管理、环境变量、文件管理

目录 端口 nmap netstat 进程管理 查看进程 关闭进程 主机状态监控 系统资源top命令 磁盘信息监控 网络状态监控 环境变量 $符号 自己设置环境变量 自定义环境变量PATH Linux的文件和下载 压缩和解压 tar命令 zip和unzip命令 端口 每个电脑有一个ip地址&#xff…

Vue项目实现在线预览pdf,并且可以批量打印pdf

最近遇到一个需求,就是要在页面上呈现pdf内容,并且还能用打印机批量打印pdf,最终效果如下: 当用户在列表页面,勾选中两条数据后,点击“打印表单”按钮之后,会跳到如下的预览页面: 预览页面顶部有个吸顶的效果,然后下方就展示出了2个pdf文件对应的内容,我们接着点击“…

echarts 地图点击常见问题

echats 散点图不支持缩放 echarts 地图点击激活label如何去除 高德loca 1.4版本热力图报错 绘制的颜色区间是 0 --1 高德地图销毁不生效 自己傻逼&#xff0c;每次没有清空数组导致叠加数据&#xff0c;约点数据越多。 为何用高德地图district.search查询不到别的省数据&…

[微信小程序] movable-view 可移动视图容器 - 范围问题

movable-view 可移动视图容器 可移动视图容器&#xff0c;在页面中可以拖拽滑动。movable-view必须在 movable-area 组件中&#xff0c;并且必须是直接子节点 <view><movable-area style"width: 750rpx;height: 200rpx;background-color: gainsboro;">&l…

Java的数据结构-Map集合

文章目录 Map概述Map常用方法Map遍历元素的方法1.方法一&#xff1a;keySet()2.方法二&#xff1a;entrySet() HashMap Map概述 1、Map和collection没有继承关系2、Map集合以key和value的方式存储数据&#xff1a;键值对key和value都是引用数据类型。key和value都是存储对象的…

(栈队列堆) 剑指 Offer 31. 栈的压入、弹出序列 ——【Leetcode每日一题】

❓ 剑指 Offer 31. 栈的压入、弹出序列 难度&#xff1a;中等 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序…

Appium Android ——利用 TestNG 并行执行用例

目录 前言&#xff1a; 一、测试类 二、连接两个 Android 设备或启动两个虚拟机 三、项目路径下新建两个 testng.xml 四、开启两个 appium server 五、导出依赖 六、执行测试 七、查看报告 前言&#xff1a; Appium是一个流行的移动应用自动化测试工具&#xff0c;…

使用semanage管理SELinux安全策略

semanage命令用于管理SELinux的策略&#xff0c;格式为“semanage [选项] [文件]”。 SELinux服务极大地提升了Linux系统的安全性&#xff0c;将用户权限牢牢地锁在笼子里。semanage命令可以设置文件、目录的策略&#xff0c;还可以管理网络端口、消息接口。 常用参数&#xf…

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目&#xff0c;为了避免全量引入 vant 导致打包体积过大&#xff0c;又不想一个一个组件手动导入&#xff0c;所以就选择了 vant 官方推荐的方法&#xff0c;使用 unplugin-vue-components 插件自动引入组件&#xff0c;并按需引入组件的样式…

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe&#xff0c;出现以下界面&#xff0c;点击下一页。 选中install from i…

力扣206. 反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…

MySQL进阶

目录 一、存储引擎 1、MySQL体系结构 2、存储引擎简介 3、存储引擎特点 InnoDB MyISAM Memory 4、存储引擎选择 二、索引 1、索引概述 2、索引结构 3、索引分类 4、索引语法 5、SQL性能分析 5.1 SQL执行频率 5.2 慢查询日志 5.3 profile详情 5.4 explain执行…

Sentinel流量规则模块(新增)

系统并发能力有限&#xff0c;比如系统A的QPS支持1个请求&#xff0c;如果太多请求过来&#xff0c;那么系统A就应该进行流量控制了&#xff0c;比如其他请求直接拒绝 新增流控规则介绍:新增流控规则窗口 1.资源名&#xff1a;默认请求路径。 2.针对来源&#xff1a;Se…