java用pdf.js在线预览pdf文件(jeecg框架)

最近在jeecg框架的后台要做一个pdf在线预览的页面功能,可是每次点预览都是下载,所以就要解决这个问题,现在解决了,记录一下,防止后面踩坑。

先放代码:

下面是点“预览”按钮的点击事件,代码放到vue2的methods里面,代码如下:

      handleLook(record) {
        let token = Vue.ls.get(ACCESS_TOKEN);
        let token2 = Vue.ls.get(ACCESS_TOKEN);
        if (record && record.pdfbg) {
          let fileUrl= process.env.VUE_APP_API_BASE_URL+"/sb/dj/getPdf?url="+ record.jybg+"&token="+token2;
          let url='/pdfjs/web/viewer.html?token='+token+'&file='+encodeURIComponent(fileUrl);

          //方式一:在浏览器打开一个新页面,显示pdf
          //window.open(url, '_blank');

          //方式二:子页面弹出,显示pdf
          this.$refs.pdfViewForm.pdfUrl =url;
          this.$refs.pdfViewForm.visible = true;

        }
      },

上面代码,其中:

1、process.env.VUE_APP_API_BASE_URL:是服务器上的访问地址(https://....);

2、如果想要读取你本地文件或者服务器文件 就 通过流的方式输出,预览 PDF 文件:

/sb/Sydj/getPdf?url="+ pdfPath+"&token="+token:调用后台方法,通过拿到pdf文件地址,通过流的方式输出到移动端页面显示。

下面是后台方法:

// 通过文件流的方式预览 PDF 文件
    @RequestMapping(value = "/getPdf", method = { RequestMethod.GET, RequestMethod.POST })
    public void pdfStreamHandeler(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        // 获取路径
        String filePath = request.getParameter("url");
        File file = new File(upLoadPath+ File.separator+ filePath);
        byte[] data = null;
        try {
            // 编辑请求头部信息
            // 解决请求头跨域问题(IE兼容性 也可使用该方法)
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setContentType("application/pdf");
            FileInputStream input = new FileInputStream(file);
            data = new byte[input.available()];
            input.read(data);
            response.getOutputStream().write(data);
            input.close();
        } catch (Exception e) {
            String aaa="";
        }
    }

3、如果是想让浏览器打开一个新窗口显示pdf,就选用方式一:

window.open(url, '_blank'); 比较简单;

如果是方式二,在当前窗口弹出显示pdf,就需要iframe嵌套一下:

<iframe id="pdfPreviewIframe" :src="pdfUrl" scrolling="auto"></iframe>

下面是遇到的坑:

官方网址:PDF.js - Home

在这里,大家一般都直接点下载,那就是最新版本,这个插件最新版本里包含.mjs文件,如下图所示

记得把pdf.js插件放到public下面

本地没有问题,能正常预览pdf,但线上服务器不可以,报如下这个错,.mjs文件的不被识别为Content-Type:application/javascript;

原因:

所以果断放弃pdf.js的最新版,下载了包含.js的旧pdf.js,解决了问题。

打包的代码,都在这里了。

参考文章:使用pdf.js在线预览 PDF (本地文件,服务器文件)

                 一篇文章教你使用 PDF.JS 在线预览 PDF (本地文件,服务器文件)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自定义一个MyBaits脱敏插件

自定义一个MyBaits脱敏插件 用于对查询结果中的敏感数据进行脱敏处理。这个插件将拦截ResultSetHandler对象的处理结果&#xff0c;对某些敏感字段进行脱敏。 插件实现步骤 创建脱敏插件类。注册插件。 1. 创建脱敏插件类 首先&#xff0c;我们创建一个自定义插件类 DataM…

Unity面试八股文之寻路算法BFS广度优先搜索

文章目录 广度优先搜索&#xff08;Breadth-First Search, BFS&#xff09;算法 广度优先搜索&#xff08;Breadth-First Search, BFS&#xff09;算法 BFS算法是一种用于图或树的遍历算法。它逐层扩展节点&#xff0c;从起始节点开始&#xff0c;首先访问其所有邻居节点&…

如何从0构建一款类似pytest的工具

Pytest主要模块 Pytest 是一个强大且灵活的测试框架&#xff0c;它通过一系列步骤来发现和运行测试。其核心工作原理包括以下几个方面&#xff1a;测试发现&#xff1a;Pytest 会遍历指定目录下的所有文件&#xff0c;找到以 test_ 开头或 _test.py 结尾的文件&#xff0c;并且…

全网唯一免费无水印AI视频工具!

最近Morph Studio开始免费公测&#xff01;支持高清画质&#xff0c;可以上传语音&#xff0c;同步口型&#xff0c;最重要的是生成的视频没有水印&#xff01; Morph Studio国内就可以访问&#xff0c;可以使用国内邮箱注册&#xff08;我用的163邮箱&#xff09;&#xff0c;…

基于协同过滤的电影推荐与大数据分析的可视化系统

基于协同过滤的电影推荐与大数据分析的可视化系统 在大数据时代&#xff0c;数据分析和可视化是从大量数据中提取有价值信息的关键步骤。本文将介绍如何使用Python进行数据爬取&#xff0c;Hive进行数据分析&#xff0c;ECharts进行数据可视化&#xff0c;以及基于协同过滤算法…

【FFmpeg】avformat_write_header函数

FFmpeg相关记录&#xff1a; 示例工程&#xff1a; 【FFmpeg】调用ffmpeg库实现264软编 【FFmpeg】调用ffmpeg库实现264软解 【FFmpeg】调用ffmpeg库进行RTMP推流和拉流 【FFmpeg】调用ffmpeg库进行SDL2解码后渲染 流程分析&#xff1a; 【FFmpeg】编码链路上主要函数的简单分…

LeetCode 207. 课程表

思路&#xff1a;这是一道拓扑排序问题&#xff0c;拓扑排序听起来可能有点复杂&#xff0c;但实际上它是个相当直观的概念。想象一下&#xff0c;你有很多事情要做&#xff0c;但有些事情必须在另一些事情完成之后才能开始&#xff0c;就像你得先穿上袜子再穿鞋子 拓扑排序就…

【UML用户指南】-23-对高级行为建模-状态机

目录 1、概述 2、状态 2.1、状态的组成 3、转移 3.1、转移的组成 4、高级状态和转移 4.1、进入效应和退出效应 4.2、内部转移 4.3、do活动 4.4、延迟事件 4.5、子状态机 5、子状态 5.1、非正交子状态 5.2、历史状态 5.3、正交子状态 6、分叉与汇合 7、主动对象…

Uboot重定位

Uboot重定位 一、重定位的意义二、介绍一些重定位相关的表项结构(节)三、uboot的重定位过程:一、重定位的意义 uboot的重定位有两次,第一次是在编译成镜像后,在makefile中调用进行处理的,其调用tools/riscv_prelink.c的代码进行重定位处理(主要就是对重定位表中的R_RIS…

Linux多进程和多线程(一)

进程 进程的概念 进程&#xff08;Process&#xff09;是操作系统对一个正在运行的程序的一种抽象。它是系统运行程序的最小单位&#xff0c;是资源分配和调度的基本单位。 进程的特点如下 进程是⼀个独⽴的可调度的活动, 由操作系统进⾏统⼀调度, 相应的任务会被调度到cpu …

[软件安装]Dev C++

一、下载Dev C软件安装包 1、官网下载官网 2、百度网盘下载压缩包 二、安装Dev C 1、解压Dev C软件安装包 2、找到【Dev-Cpp 5.11…】应用程序&#xff0c;右键选择【以管理员身份运行】它 3、设置语言 回到桌面&#xff0c;右键桌面上的【Dev C 5.11软件图标】&#xff0c…

vue插槽的简单使用

默认插槽 1.在Category中创建插槽 <slot>默认值<slot/> 2.在App中使用 <Category tittle"美食"> <ul ><li v-for"(l,index) in foods" :key"index">{{l}}</li></ul> </Category> 3.运行后的…

用英文介绍美国总统:Barack Obama First African-American President (2009 – 2017)

Barack Obama: First African-American President (2009 – 2017) Link: https://www.youtube.com/watch?vwHCBI3yypmE&listPLybg94GvOJ9E-ZM1U6PAjgPUmz-V4-Yja&index44 Introduction Barack Obama made history as the first African-American elected to the pre…

中国电信股份有限公司江西分公司招聘信息 7.5日截止

法律事务管理(南昌) 学历要求 本科及以上学历 岗位职责 1.依据国家法律、法规和相关规章规定,为公司其他部门提供日常法律服务与支持; 2.负责公司各类合同审核工作; 3.负责公司法律文件的起草和法律事务谈判; 4.围绕与公司业务有关的法律问题及法…

Alibaba Cloud Linux详解_操作系统兼容性_alinux稳定性全解析

Alibaba Cloud Linux是阿里云自研的稳定、安全、高性能的服务器Linux操作系统&#xff0c;完全兼容CentOS/RHEL生态和操作方式&#xff0c;又阿里云提供免费提供长期支持和维护LTS。Alibaba Cloud Linux是目前阿里云服务器最大规模使用的操作系统之一&#xff0c;可部署在Web网…

基于GWO灰狼优化的多目标优化算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1灰狼优化算法原理 4.2 多目标优化问题(MOP)的帕累托最优解 4.3 基于GWO的多目标优化算法 5.完整程序 1.程序功能描述 基于GWO灰狼优化的多目标优化算法matlab仿真&#xff0c;目标函数…

华为数通——STP-RSTP-MSTP生成树

STP 为了提高网络可靠性&#xff0c;交换机之间常常会进行设备冗余&#xff08;备份&#xff09;&#xff0c;但这样会给交换网络带来环路风险&#xff0c;导致广播风暴以及MAC地址表不稳定等问题。 STP&#xff1a;生成树协议的作用就是为了解决避免二层环路&#xff0c;解决…

[NeurIPS2021] Deep Residual Learning in Spiking Neural Networks【文献精读、翻译】

深度残差学习在脉冲神经网络中的应用 Fang W, Yu Z, Chen Y, et al. Deep residual learning in spiking neural networks[J]. Advances in Neural Information Processing Systems, 2021, 34: 21056-21069. 摘要 深度脉冲神经网络 (SNNs) 因为使用离散的二进制激活和复杂的时…

FlowUs息流打造AI赋能下的知识库,信息深度挖掘与智能创作!FlowUs让你的数据资产更有价值

在AI时代的大潮中&#xff0c;FlowUs息流笔记类数据库凭借其强大的数据资产管理能力&#xff0c;正以前所未有的方式重塑着知识工作者的学习、研究与协作模式。当深厚的数据资产遇上AI的智能助力&#xff0c;无论是学术论文的撰写&#xff0c;还是高效提炼多人会议的核心观点&a…

web前端大作业-乡村扶贫、乡村振兴

文章目录 代码分析页面截图代码连接 代码分析 代码结构 主页index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta…