vue 预览、下载pdf

这篇博客介绍了如何在Vue.js应用中实现PDF文件的预览和下载。首先,由于PDF文件存储在OSS上,可以使用a标签进行下载,不适合通过iframe预览。然后,博主展示了使用vue-pdf库来预览PDF文件,包括安装和应用的步骤。
摘要由CSDN通过智能技术生成

1.下载pdf文件

因为pdf文件是传到oss上的,地址是下载地址,所可以使用a标签下载,但不能使用iframe等方法预览

<el-button class="download" v-if="list&&list.length>0" @click="downloadFile(fileList)" type="text">下载</el-button>
downloadFile(fileList){
   
   window.location.href = fileList[0].url
   this.$message.success('下载成功!');
},

2.使用vue-pdf预览pdf文件

1.安装vue-pdf

npm install --save vue-pdf

2.使用

<template>
  <div class="pdf">
    <pdf 
      ref="pdf"
      :src="pdfUrl"
      :page="pageNum"
      :rotate="pageRotate"
      @password="password"
      @progress="loadedRatio = $event"
      @page-loaded="pageLoaded($event)"
      @num-pages="pageTotalNum=$event" 
      @error="pdfError($event)"
      @link-clicked="page = $event">
    </pdf>
    <div class="pdf-tab">
      <el-button type="text" class="btn-de
### 实现 Vue 项目中的 PDF 文件在线预览而不触发自动下载 为了在 Vue 项目中实现 PDF 文件的在线预览并防止其自动下载,可以采用 `vue-pdf` 插件来加载和展示 PDF 文档。此方法不仅能够提供良好的用户体验,还能有效控制文档的行为。 #### 安装依赖库 首先安装必要的 npm 包: ```bash npm install vue-pdf pdfjs-dist --save ``` #### 配置全局变量 确保配置好 webpack 或其他构建工具以支持 ES6 模块化语法。对于某些版本可能需要特别设置: ```javascript import * as pdfJs from 'pdfjs-dist'; pdfJs.GlobalWorkerOptions.workerSrc = new URL( 'pdfjs-dist/build/pdf.worker.min.js', import.meta.url, ).href; ``` #### 创建组件用于渲染 PDF 页面 创建一个新的 Vue 组件专门用来处理 PDF 显示逻辑: ```html <template> <div class="pdf-viewer"> <!-- 使用 v-for 循环遍历每一页 --> <pdf v-for="page in numPages" :key="page" :src="pdfUrl" :page="page" style="width: 100%; margin-bottom: 2px;" ></pdf> </div> </template> <script> import pdf from 'vue-pdf' export default { components: { pdf }, props: ['url'], data() { return { pdfUrl: '', numPages: undefined } }, watch: { url(val) { this.loadPdf(val); } }, methods: { loadPdf(url) { const loadingTask = pdf.createLoadingTask(url); loadingTask.promise.then(pdf => { console.log(`总共有 ${pdf.numPages} 页`); this.numPages = pdf.numPages; // 设置 src 属性以便于子组件重新获取资源 this.pdfUrl = loadingTask; }); } }, mounted() { if (this.url) { this.loadPdf(this.url); } } } </script> ``` 上述代码片段展示了如何利用 `vue-pdf` 来动态加载指定路径下的 PDF 文件,并逐页呈现出来[^1]。 #### 关键点说明 - **阻止默认行为**:当点击链接时,默认情况下浏览器可能会尝试直接打开或保存文件。为了避免这种情况发生,在 HTML 中定义 `<a>` 标签时应移除 `download` 属性;如果是在 JavaScript 中发起请求,则需注意不要调用任何可能导致下载的操作。 - **跨域资源共享(CORS)**:确保服务器端已正确设置了 CORS 头部信息允许来自客户端应用域名的访问请求。这一步骤非常重要因为大多数现代浏览器出于安全考虑会对不同源之间的交互施加严格限制[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值