vue 实现pdf预览和下载

简介: vue 实现pdf预览和下载

1. 前言

  1. 虽然我自己找工作的时候没有问到此问题,但是有些道友私下wei我了,每次解释比较麻烦,还是单独写篇文章吧
  2. 谁让前端啥都能干呢

2.  准备工作

  1. 主要框架vue3
  2. pdf第三方库:PDF.js 是一个开源的 JavaScript 库,可以在网页上直接加载渲染 PDF 文件。
    3.通过引入 PDF.js 库并使用其提供的 API,在 Vue 组件中实现 PDF 的预览功能
  3. 安装依赖 注意 依赖名字

npm install pdfjs-dist

3. vue组件 ---预览

<template>
  <div>
    <div ref="pdfContainer"></div>
  </div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import * as pdfjs from 'pdfjs-dist/build/pdf';
const pdfUrl = '/path/to/pdf.pdf';
const pdfContainer = ref(null);
onMounted(() => {
  const pdfViewer = new pdfjs.PDFViewer({
    container: pdfContainer.value,
  });
  pdfjs.getDocument(pdfUrl).promise.then((pdf) => {
    pdfViewer.setDocument(pdf);
  });
});
</script>
  1. 使用了pdfjs-dist库来加载和渲染 PDF 文件。
    2.在 onMounted 钩子中,我们创建了一个 PDFViewer 实例
    3.并将 PDF 文件渲染到指定的容器
  2. 这只写了 PDF 文件的预览功能,你还可以根据需要对预览界面进行进一步的样式和交互优化。同时,确保将实际的 PDF 文件路径(pdfUrl)替换为你自己的路径

4. iframe 实现预览

  1. 使用 iframe 元素加载 PDF 文件。通过将 PDF 文件的 URL 设置为iframesrc 属性,可以在网页上嵌入 PDF 文件并实现预览功能。
  2. 相关代码

<template>
  <div>
    <iframe ref="pdfViewer" :src="pdfUrl"></iframe>
  </div>
</template>
<script setup>
import { ref } from 'vue';
const pdfUrl = '/path/to/pdf.pdf';
const pdfViewer = ref(null);
</script>
<style scoped>
iframe {
  width: 100%;
  height: 100%;
  border: none;
}
</style>
  1. 使用 ref 来引用 iframe 元素,并将 PDF 文件的 URL 绑定到 iframe 的 src 属性上。
  2. 这样就可以在页面中嵌入 PDF 文件并实现预览功能。你可以根据需要调整 iframe 的样式和大小。
  • 使用 iframe 预览 PDF 文件可能受到浏览器安全策略的限制,具体行为可能因浏览器而异。


5.  下载功能实现

  • 前端下载其实都很方便的

使用 <a> 标签

  1. 最简单的方式是使用 <a>标签来创建一个下载链接,
  2. 将 PDF 文件的 URL 设置为该链接的 href 属性。
  3. 用户点击链接时,浏览器会自动下载 PDF 文件

<template>
  <div>
    <a :href="pdfUrl" download="filename.pdf">下载PDF</a>
  </div>
</template>
<script setup>
import { ref } from 'vue';
const pdfUrl = '/path/to/pdf.pdf';
</script>
  1. 使用 <a> 标签创建一个下载链接,并将 PDF文件的 URL绑定到 href 属性上。
  2. 通过设置 download 属性,可以指定下载的文件名
  3. 用户点击链接时,浏览器会自动下载指定的 PDF 文件。
  • 确保将实际的 PDF 文件路径(pdfUrl)替换为你自己的路径,并根据需要自定义下载链接的样式。

使用 JavaScript 下载

  1. 如果你需要在用户执行某个操作后触发 PDF 文件的下载,可以使用 JavaScript 来实现文件下载功能。
  2. 这可以通过创建临时的Blob对象和使用 URL.createObjectURL()方法来实现

<template>
  <div>
    <button @click="downloadPdf">下载PDF</button>
  </div>
</template>
<script setup>
import { ref } from 'vue';
const pdfUrl = '/path/to/pdf.pdf';
const downloadPdf = () => {
  const xhr = new XMLHttpRequest();
  xhr.open('GET', pdfUrl, true);
  xhr.responseType = 'blob';
  xhr.onload = () => {
    if (xhr.status === 200) {
      const blob = new Blob([xhr.response], { type: 'application/pdf' });
      const url = URL.createObjectURL(blob);
      const link = document.createElement('a');
      link.href = url;
      link.download = 'filename.pdf';
      link.click();
      URL.revokeObjectURL(url);
    }
  };
  xhr.send();
};
</script>
  1. 定义了 downloadPdf方法,在用户点击按钮时触发该方法。
  2. 方法内部使用 XMLHttpRequest对象进行异步请求,获取 PDF 文件的 Blob 数据。
  3. 然后,通过创建 <a> 标签,将 Blob对象的 URL 设置为链接的 href 属性,
  4. 再使用click()方法模拟点击下载

请注意,将实际的 PDF 文件路径(pdfUrl)替换为你自己的路径,并根据需要自定义触发下载操作的方式和样式。


6. 服务端下载

  1. 前端通过调用后端接口来实现下载也是常用的方式

参考资料


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉
相关文章
|
3月前
|
人工智能 文字识别 自然语言处理
熊猫 OCR 识别软件下载,支持截图 OCR、PDF 识别、多语言翻译的免费全能工具,熊猫OCR识别
本文介绍了几款实用的图文识别软件,包括熊猫OCR、Umi-OCR和天若OCR_本地版。熊猫OCR功能强大,支持多窗口操作、AI找图找色、OCR识别等;Umi-OCR免费且高效,具备截图OCR、批量处理等功能;天若OCR界面简洁,适合快速文字识别。文章还提供了下载链接及软件特点、界面展示等内容,便于用户根据需求选择合适的工具。
308 36
|
3月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
88 4
|
11月前
|
数据采集 Web App开发 JavaScript
Puppeteer自动化:使用JavaScript定制PDF下载
在现代Web开发中,自动化工具如Puppeteer可显著提升效率并减少重复工作。Puppeteer是一款强大的Node.js库,能够控制无头Chrome或Chromium浏览器,适用于网页快照生成、数据抓取及自动化测试等任务。本文通过示例展示了如何使用Puppeteer自动化生成定制化的PDF文件,并介绍了如何通过配置代理IP、设置user-agent和cookie等技术增强自动化过程的灵活性与稳定性。具体步骤包括安装Puppeteer、配置代理IP、设置user-agent和cookie等,最终生成符合需求的PDF文件。此技术可应用于报表生成、发票打印等多种场景。
418 6
Puppeteer自动化:使用JavaScript定制PDF下载
|
11月前
|
前端开发
PDF文件上传转成base64编码并支持预览
PDF文件上传转成base64编码并支持预览
581 12
|
6月前
|
数据采集 前端开发 JavaScript
PDF预览:利用vue3-pdf-app实现前端PDF在线展示
通过本文的介绍,我们详细了解了如何在Vue3项目中使用vue3-pdf-app实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
JavaScript
jquery图片和pdf文件预览插件
EZView.js是一款jquery图片和pdf文件预览插件。EZView.js可以为图片和pdf格式文件生成在线预览效果。支持的文件格式有pdf、jpg、 png、jpeg、gif。
262 16
|
10月前
|
前端开发 API
前端界面生成PDF并导出下载
【10月更文挑战第21天】利用合适的第三方库,你可以在前端轻松实现界面生成 PDF 并导出下载的功能,为用户提供更方便的文档分享和保存方式。你还可以根据具体的需求进一步优化和定制生成的 PDF 文件,以满足不同的业务场景要求。
|
11月前
|
JavaScript 前端开发 容器
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
1287 0
|
2月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
359 40
|
5月前
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。