pdf.js 以流的形式播放并禁止下载

首先在 viewer.jsp添加如下代码
<script>
	var DEFAULT_URL = "";//注意,删除的变量在这里重新定义  
	var PDFData = "";
	$.ajax({
		type : "post",
		async : false, //
		mimeType : 'text/plain; charset=x-user-defined',
		url : "<%=basePath %>pdf/viewerit.html",
		success : function(data) {
			PDFData = data;
		}
	});
	var rawLength = PDFData.length;
	//转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068  
	var array = new Uint8Array(new ArrayBuffer(rawLength));
	for (i = 0; i < rawLength; i++) {
		array[i] = PDFData.charCodeAt(i) & 0xff;
	}
	DEFAULT_URL = array;
	
	
</script>

然后后台代码

@ResponseBody
	@RequestMapping("viewerit.html")
	public void viewerit(HttpServletRequest request, HttpServletResponse response) throws IOException {
		response.setStatus(HttpServletResponse.SC_OK);
		response.setContentType("application/pdf;charset=UTF-8");
		File file = new File("E:/1.pdf");
		FileInputStream in = new FileInputStream(file);
		BufferedInputStream input = new BufferedInputStream(in);
		byte buffBytes[] = new byte[1024];
		int read = 0;
		while ((read = input.read(buffBytes)) != -1) {
			response.getOutputStream().write(buffBytes, 0, read);
		}
		response.getOutputStream().flush();
		response.getOutputStream().close();
	}
如此便能以流的形式观看pdf,然后我屏蔽了所有的下载按钮,发现按ctrl+s依然能下载pdf于是在viewer.js 添加代码

document.addEventListener("keydown", function(e) {
    if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
      e.preventDefault();
      e.stopPropagation();
    }
  }, false);
但未找到原因为什么还是可以按ctrl+s下载 于是我又在外边包了层iframe 
<iframe id="childframe" src="<c:url value="/pdf/viewer.html" />" width=100% height=1000px;></iframe>

让viewer.jsp变成frame中的内容 再按ctrl+s无法下载 大功告成


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值