pdf.js的使用 (3)真实项目分享
需求:a.jsp页面要做一个pdf的预览功能,我采用layer.open()弹窗的形式来预览pdf
1.在a.jsp点击文件然后弹出窗口(其实是弹出b.jsp)
var lay=layer.open({
type: 2,
title:"弹窗的名字",
shadeClose: true,
shade: 0.8,
area: ['100%', '100%'],
content: "/afArchiveDetail/operate.do?ArchiveDetailUUID=" + o.archiveDetailUUID+"&YearMonth="+o.yearMonth+"&AllowDownload="+(this.obj.allowDownload ||"")+"&flag=operate&callbackname=updateShowFileName"
});
content:参数可以是一个请求后台的url路径,通过后台然后返回一个jsp页面(假设返回就是b.jsp页面)
2.在b.jsp页面这样写
这个可以是直接看一个pdf文件
<%--<iframe id="pdfView" width="99%" height="400" src="${sysHostUrl }/static/js/pdfJs/web/viewer.html?file=compressed.tracemonkey-pldi-09.pdf&downloadFlag=false"></iframe>--%>
关键看这个
----------------HTML----------------
<iframe id="pdfView" width="99%" height="99%"></iframe> ----------------JS------------------
在vue.js里面这样写,在created函数里面调方法(我这里只是从项目里面挑选了部分关键代码出来,需要的同学可以根据自己的情况来改)
created : function () {
this.viewPDF();
},
viewPDF : function () {
let pdfView = document.getElementById('pdfView');
let pdfUrl="/webApi/downPDF.do?ArchiveDetailUUID="+_key+"&YearMonth="+_yearMonth+"&number="+Math.random();
//&downloadFlag=false 这个参数是我用来控制viewer.html的打印,下载,上传按钮的,为false时都变为灰色,不能点击
//获取流文件的方式预览pdf文件
let src = "/static/js/pdfJs/web/viewer.html?file=" + encodeURIComponent(pdfUrl)+"&local="+'${curLang}'+"&downloadFlag=false&isrequest=true&archiveDetailUUID="+_key+"&allowdownload="+_allowdownload;
pdfView.src=src;
}, 3.在viewer.html页面这样写
<script>
//url="/static/js/pdfJs/web/viewer.html?file=%2FwebApi%2FdownPDF.do%3FArchiveDetailUUID%3Dff8080816cb8b7a4016cb8eb46de0006&downloadFlag=false";
//search 属性是一个可读可写的字符串,可设置或返回当前 URL 的查询部分(问号 ? 之后的部分)。
//substr(1) 就是从索引1开始截取
var archiveDetailUUID;
var isRequest;
var queryString = document.location.search.substring(1); //获得浏览器地址栏URL串
var params = parseQueryString(queryString);//对URL串进行解码 解析后返回的数据格式:{file: "/webApi/downPDF.do?ArchiveDetailUUID=ff8080816cb8b7a4016cb8eb46de0006", downloadflag: "false", archivedetailuuid: "ff8080816cb8b7a4016cb8eb46de0006"}
archiveDetailUUID=params.archivedetailuuid;
isRequest=params.isrequest;//是否请求服务器, true/false
var CURLANG=params.local;//语言
function parseQueryString(query) {
var parts = query.split('&');
var params = Object.create(null);
for (var i = 0, ii = parts.length; i < ii; ++i) {
var param = parts[i].split('=');
var key = param[0].toLowerCase();
var value = param.length > 1 ? param[1] : null;
params[decodeURIComponent(key)] = decodeURIComponent(value);
}
return params;
}
</script>
<script src="viewer.js"></script>
那到这一步了基本上就可以在viewe.html取到其它页面传过来的值了 哎呀!把pdf.js的中英文切换一起写了吧
var CURLANG=params.local;就是多语言切换了 (这个是写在viewer.html里面的,可以看上面的代码怎么把参数从其它的jsp页面传过来!)
在viewer.js里面这样改
来看下效果图:


技术水平有限,只能写成这样的了,如果发现有写的不对的还请多多指教,希望能帮助到有需要的人
pdf.js的使用 (3)真实项目分享的更多相关文章
- pdf.js的使用(1) 站在巨人的肩膀上纯干货分享,没有华丽的词藻
以下是我在实际项目开发中的过程分享 前端是:vue+jsp 1.首先下载pdf.js(怎么下可以去百度),实在不会就私我,我发给你 1.1展示一哈我下载下来的pdf.js的目录结构 1.2接下来可 ...
- 在web项目中集成pdf.js的默认查看器
pdf.jsMozilla开源的一项用于在HTML5平台上显示pdf文档的技术,Mozilla自己的Firefox浏览器也用了pdf.js来预览pdf,可见应该是一个比较成熟稳定的方案(btw,chr ...
- 在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在我的<FastReport报表随笔>介绍过各种FastReport的报表设计和使用,FastReport报表可以弹性的独立设计格式,并可以在Asp.net网站上.Winform端上使用, ...
- pdf.js pdfdom.js使用(转)
开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...
- pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
近期,有一个朋友做B端,服务器存了大量的金融类数据,很多都是pdf文档,他现在的做法是,先将pdf文档转换成flash,再放到浏览器上给用户浏览,但是他告诉我,这种体验太差了,而且很好资源,空间已经快 ...
- java实现word转pdf在线预览(前端使用PDF.js;后端使用openoffice、aspose)
背景 之前一直是用户点击下载word文件到本地,然后使用office或者wps打开.需求优化,要实现可以直接在线预览,无需下载到本地然后再打开. 随后开始上网找资料,网上资料一大堆,方案也各有不同,大 ...
- Immutable.js 以及在 react+redux 项目中的实践
来自一位美团大牛的分享,相信可以帮助到你. 原文链接:https://juejin.im/post/5948985ea0bb9f006bed7472?utm_source=tuicool&ut ...
- PDF.js Electron Viewer
PDF.js 是基于 HTML5 解析与渲染 PDF 的 JavaScript 库,由 Mozilla 主导开源. 本文旨在介绍 PDF.js 于 Electron 里如何开始使用,实际尝试了用其 A ...
- 在线浏览PDF之PDF.JS (附demo)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...
随机推荐
- 钉钉内网穿透工具在windows的使用。
钉钉内网穿透工具在windows环境下使用 1.WIN+R,然后cmd,调出dos控制台 2.进入内网穿透程序ding.exe所在目录 3.执行 ./ding.exe -config=ding.cfg ...
- beego orm 多对多插入和查询操作
// User 用户表 type User struct { ID int UserName string Password string Articles []*Article `orm:" ...
- 题解【洛谷P2615】[NOIP2015]神奇的幻方
题目描述 幻方是一种很神奇的 \(N \times N\) 矩阵:它由数字 \(1,2,3,\cdots \cdots ,N \times N\) 构成,且每行.每列及两条对角线上的数字之和都相同. ...
- LED Magic Light - How Does The LED Light Change Color?
The LED Magic Light states that the color-changing LED is not an LED in the package, but three ...
- 转载:DRC
https://cn.mathworks.com/help/audio/ug/dynamic-range-control.html?requestedDomain=cn.mathworks.com h ...
- STA 开篇
时序分析=动态时序分析+静态时序分析 动态时序分析简单讲就是gate-level simulation,仿真对象是netlist+sdf,通过SDF反标,得到gate跟net的delay,通过输入大量 ...
- Flutter 中的表单
一.Flutter 常用表单介绍 Flutter 中常见的表单有 TextField 单行文本框,TextField 多行文本框.CheckBox.Radio.Switch CheckboxLi ...
- 分析AppClassLoader,ExtClassLoader 和URLClassLoader 的关系
测试代码: class Hello { public String str = "Hello World"; public void fun() { System.out.prin ...
- Day0 认识Java与变量类型
字节码与虚拟机 Java介于编译型语言和解释型语言之间.编译型语言如C.C++,代码是直接编译成机器码执行,但是不同的平台(x86.ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码 ...
- 简单记录搭建Harbor私服仓库
一.本机环境 ①系统镜像:CentOS7 ②Docker:Docker version 19.03.5 ③Docker-compose:docker-compose 二.Docker安装 参考官网安装 ...
