首页 教程 Web前端 Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

目录

介绍

安装环境

预览pdf

本地文件预览 

在线路径预览

下载文件路径预览

学习源码


介绍

在前端vue中有时会遇到需要进行预览pdf的场景,前段时间我一位前端朋友就有遇到这个问题,也和我进行了一些探讨

其中预览pdf场景主要会有三种情况:

本地文件,pdf在线预览路径,pdf下载路径三种,其中前面两种还比较常见,但是第三种的pdf下载路径进行预览这种场景还是不是太多的,因为他们后端给返回的路径就是一个下载路径,路径放到浏览器里面会直接进行下载pdf

下面将会以vue3为例来进行预览pdf的演示

安装环境

vue3

第三方包组件

npm install vue-pdf-embed@^1.1.6 npm install vue3-pdfjs@^0.1.6

预览pdf

主要组件代码如下

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

本地文件预览 

首先第一种情况,直接把pdf文件放入项目目录中进行预览

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)启动查看效果

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

预览成功

在线路径预览

 比较常见的就是一个可以直接拿来预览的路径,比如下面的路径:

http://static.shanhuxueyuan.com/test.pdf

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

书写预览代码

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取) 预览成功

当然也可以使用系统自带的iframe进行预览

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

查看预览效果

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取) 预览样式有些丑需要自己进行书写样式,当然本地文件那种也可以使用iframe进行预览,可以自己尝试下

下载文件路径预览

极少数情况下拿到的是一个直接下载的路径,此时前端不想进行下载想直接对该路径进行预览,当然前面的组件也完全可以兼容这种写法

首先后端准备提供一个下载文件的接口路径

@GetMapping("/downloadPdf") public ResponseEntity<StreamingResponseBody> downloadPdf() { // 指定本地 PDF 文件的路径 String filePath = "C:\\var\\示例2.pdf"; File file = new File(filePath); // 检查文件是否存在 if (!file.exists()) { return ResponseEntity.notFound().build(); } // 设置响应头 HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=test.pdf"); headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); headers.add("Pragma", "no-cache"); headers.add("Expires", "0"); // 返回 StreamingResponseBody StreamingResponseBody body = outputStream -> { try (FileInputStream fis = new FileInputStream(file)) { byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = fis.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); } }; return ResponseEntity.ok() .headers(headers) .contentLength(file.length()) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(body); }

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

服务启动后将接口路径直接放入到浏览器中回车验证是否直接进行文件的下载

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)下载成功表示该路径就是一个直接下载的路径

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

查看预览效果:

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

预览成功

但是此时嵌套一般的iframe组件就不行了

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

查看预览 

Vue3前端多种方式超简单预览PDF文件一文搞定(内附源码示例自取)

预览失败,浏览器直接下载文件了

学习源码

vue3预览pdf示例源码

提取码: nuq6

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.23k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  489

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  314

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。