【vue2中的pdf预览】iframe/pdf.js/vue-pdf

前言

vue2中预览pdf的方法有pdf.js和vue-pdf等。下面进行简单对比&使用方法的介绍。

正文

直接使用iframe预览pdf

使用iframe预览pdf

如果后端返回的不是url,那么需要使用responseType = 'blob'来读取后端传来的内容。

扩展:

  • 同样是使用iframe进行预览,如果有其他格式 如word/xls/ppt/txt的文件需要预览,可以使用微软解析地址的url进行预览。
    注意:文件地址是公网可打开的;控制的只是src地址
    微软解析地址:https://view.officeapps.live.com/op/view.aspx?src=你的文件地址
    参考:vue预览 pdf、word、xls、ppt、txt文件方法
  • 常见问题的解决
    参考:PDF预览完整解决方案及各种兼容(VUE版)
    • 缓存问题:利用iframe打开pdf后,当再次利用iframe打开另一个pdf时会显示第一份pdf,原因是浏览器对url的缓存处理。
      解决办法:给url加时间戳或随机数,这样就没有缓存问题了。
      const fresh=new Date().getTime();//时间戳 this.url = this.url+'?'+ fresh; // 初始化查看pdf应用地址
    • 使用base64url问题:有些pdf的url采用base64格式,直接将base64格式url放进src中可能会报错导致显示不了。原因是base64地址太长,浏览器不支持。
      **解决办法:**利用Blob转base64url成文件路径.
      css复制代码 var bstr = window.atob(_this.baseUrl); //解码 var n = bstr.length; var u8arr = new Uint8Array(n);

使用pdf.js+iframe预览

相比起直接使用iframe预览,功能更加强大,支持更多自定义的功能。

比如:

  1. 自定义样式:使用 PDF.js,你可以更灵活地自定义 PDF 文件的样式。你可以修改文字的颜色、字体大小、行间距等,以满足特定的需求。
  2. 高级功能:PDF.js 提供了许多高级功能,例如缩放、旋转、搜索、导航目录等。这些功能在直接使用 iframe 时不可用。
  3. 高级操作:使用 PDF.js,你可以实现更高级的操作,如添加注释、书签、水印等。这些操作在直接使用 iframe 时无法实现。
  4. 兼容性:PDF.js 可以在大多数现代浏览器中正常工作,因此可以提供更好的兼容性,以确保用户可以在各种设备和浏览器上正确显示和操作 PDF 文件。
  5. 定制性:PDF.js 是一个开源项目,可以根据项目需求进行二次开发和定制。你可以根据具体需求修改源代码,以满足特定的业务需求。
    详细|vue中使用PDF.js预览文件实践包括如何注释代码以解决跨域问题。

PDF.js使用总结包括一些api列举。

扩展

vue项目,npm install方式使用pdfjs 这里不是使用iframe的,而是直接渲染内容,手动写翻页的按钮或其他功能。有完整代码。
pdfjs-dist web预览pdf文件, pdfjs-dist example 也是使用npm方式使用pdf.js的。包括对比vue-pdf的优劣,和vue.config.js的配置,有完整代码。

npm install方式使用pdf.js: 需根据需求自己写样式,实现相关功能。

以静态资源方式使用(就是本文章前面的用法): 将pdf下载到本地项目中,以静态资源方式使用,通过 pdf.js 提供的 viewer.html

文件来展示服务器上的pdf文件,无须自己设置样式(已有pdf.js的全套样式和相关功能,不需要的地方可通过更改源码等方式自行去掉)

vue-pdf

vue-pdf是基于pdfjs-dist插件的vue封装。
PDF预览完整解决方案及各种兼容(VUE版)可以参考的简略版的使用方法和常见问题解决。

vue-pdf 一个基于vue的pdf预览插件(vue2.x)这个封装了一个有分页显示功能的完整代码,可以参考,整体使用的逻辑比较清晰。

扩展

vue实战--vue+elementUI实现多文件上传+预览(word/PDF/图片/docx/doc/xlxs/txt) ;可以参考的封装思路和功能,有完整代码和图示。预览还是用的https://view.officeapps.live.com/op/view.aspx?src=${data}

相关推荐
daols8813 分钟前
vue 表格 vxe-table 手动操作单元格范围选择,手动选择 excel 指定区域的用法
vue.js·excel·vxe-table
QT 小鲜肉36 分钟前
【Linux命令大全】003.文档编辑之head命令(实操篇)
linux·运维·服务器·前端·javascript·chrome
小二·1 小时前
Vue Router 4 完全指南:动态路由、权限控制、懒加载与性能优化
前端·javascript·vue.js
YJlio1 小时前
PsPing 学习笔记(14.10):常见错误与排错思路——从“不可达”到“端口拒绝”
开发语言·笔记·python·学习·django·pdf·pygame
伶俐的猪1 小时前
UI_Testing 项目详细文档
开发语言·javascript·ui
卧指世阁1 小时前
不从零开始构建专属 SVG 编辑器的实战指南
前端·javascript·前端框架
wangchensong1 小时前
pdf防泄漏-lockbox使用心得
pdf
Hilaku2 小时前
年薪 50W 的前端,到底比年薪 15W 的强在哪里?
前端·javascript·架构
不想秃头的程序员2 小时前
Vue3 defineModel 完全指南:从基础使用到进阶技巧
前端·vue.js·面试
CC码码2 小时前
迈向开源第一步,给fabric.js提PR
前端·javascript·开源·web·fabric