当前位置: 首页 > news >正文

java pdf base64_Javaweb中利用pdf.js显示oracle数据库中Base64编码转为的PDF

1.下载Jar包 sun.misc.BASE64Decoder.jar

有的说要下载sun.misc.BASE64Encoder和sun.misc.BASE64Decoder包但是发现BASE64Decoder中就存在encoder类

不过sun这个包并没有在java api中出现过所以其实不安全的可以采用

org.apache.commons.codec.binary.Base64类

2.将数据库中存储的PDF二进制文件 转为PDF文件放在项目目录

public String downloadWsbrPdf(){

optResult = new JsonActionResult();

BufferedInputStream bin = null;

FileOutputStream fout = null;

BufferedOutputStream bout = null;

try {

String wsnr="";

String realpath=ServletActionContext.getServletContext().getRealPath("/");

System.out.println("CourtRequestAction.downloadWsbrPdf bdhm:"+bdhm);

CourtRequestWs courtRequestWs=new CourtRequestWs();

List wss=courtRequestWsService.getListByClause(" BDHM='"+bdhm+"'",null);

if(wss!=null && wss.size()>0){

courtRequestWs=wss.get(0);

//updateWsnr(courtRequestWs);

}else{

optResult.setErrorMsg("没有文书!");

}

//获取ws表的证明

if(courtRequestWs.getWsnr()!=null){

wsnr=new String(courtRequestWs.getWsnr(),"GBK");

}

//进行base64解码

BASE64Decoder decoder = new BASE64Decoder();

byte[] bytes=decoder.decodeBuffer(wsnr);

//创建一个将bytes作为其缓冲区的ByteArrayInputStream对象

ByteArrayInputStream inputStream=new ByteArrayInputStream(bytes);

//创建从底层输入流中读取数据的缓冲输入流对象

bin=new BufferedInputStream(inputStream);

String fileName=realpath+bdhm+".pdf";

//指定输出的文件

File file =new File(fileName);

//创建到指定文件的输出流

fout=new FileOutputStream(file);

//为文件输出流对接缓存输出流对象

bout=new BufferedOutputStream(fout);

byte[] buffers=new byte[1024];

int len=bin.read(buffers);

while (len!=-1) {

bout.write(buffers, 0, len);

len=bin.read(buffers);

}

//刷新输出流并强制写出所有的缓存的输出字节

bout.flush();

} catch (Exception e) {

optResult.setErrorMsg(e.getMessage());

e.printStackTrace();

}finally{

try {

bin.close();

fout.close();

bout.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return SUCCESS;

}

public String deletepdf(){

System.out.println("CourtRequestAction.deletepdf bdhm:"+bdhm);

optResult = new JsonActionResult();

try {

String realpath=ServletActionContext.getServletContext().getRealPath("/");

String deleteFile=realpath+bdhm+".pdf";

File file=new File(deleteFile);

if(!file.exists()){

System.out.println("删除文件失败,文件不存在");

}else{

if(file.isFile()){

//如果要删除的是文件

if(file.delete()){

System.out.println("删除为预览生成的文件成功!");

}

}

}

} catch (Exception e) {

optResult.setErrorMsg(e.getMessage());

}

return SUCCESS;

}

3.前台调用pdf.js

function viewWenshu(){

var selDate = $("#courtRequestList").cusgrid("getSelected");

if(selDate){

var bdhm=selDate.bdhm;

$.get("courtrequest/downloadWsbrPdf.action",{bdhm:bdhm},function(data){

if(data.success){

$("#courtPdf").cusdialog({

width:"95%",

height:"95%",

title:"证明文件",

content:"",

hideBtn:true,

onBeforeClose:function(){

//关闭时删除产生的pdf文件

$.get("courtrequest/deletepdf.action",{bdhm:bdhm},function(data){

if(data.success){

console.log("删除为预览生成的pdf文件成功");

}

});

}

});

//window.open("js/pdfjs/web/viewer.html?AUTHID="+$("#authId").val()+"&file="+bdhm+".pdf");

}else{

$.cusalert({title:'提示',content:data.errorMsg,type:'DEFAULT'});

}

})

}else{

$.cusalert({title:'提示',content:'请选择一条数据。',type:'DEFAULT'});

}

}

相关文章:

  • SQL Server 2005豪华盛宴
  • java班级管理系统代码_基于jsp的班级管理系统-JavaEE实现班级管理系统 - java项目源码...
  • java 聚合服务_远程服务接口聚合带来的性能提升
  • java编写客户_java编写服务器和客户端.docx
  • ORA-03113错误分析
  • 一个带年月日时分秒选择的js脚本
  • java发送苹果消息慢_使用javapns向苹果apns发送消息成功,手机设备有时收不到推送信息...
  • java 1.6 ubuntu_Ubuntu16.04安装java6(jdk 1.6)
  • 自适应反走样(Adaptive Anti-aliasing)
  • java emptyarray_Java ArrayDeque isEmpty()方法
  • GCCfor Win32 开发环境介绍(6)
  • php 禁止直接访问目录_php – 防止网站某些目录被直接访问的最佳方法是什么?...
  • Delphi关于改进AES算法的加解密文件功能
  • php博客系统答辩ppt,个人博客系统设计与实现答辩PPT.ppt
  • 还是自适应反走样
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【个人向】《HTTP图解》阅后小结
  • 77. Combinations
  • C++入门教程(10):for 语句
  • es6(二):字符串的扩展
  • GraphQL学习过程应该是这样的
  • js中的正则表达式入门
  • Python_OOP
  • quasar-framework cnodejs社区
  • Redis中的lru算法实现
  • 测试如何在敏捷团队中工作?
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 什么是Javascript函数节流?
  • 使用common-codec进行md5加密
  • 微信小程序设置上一页数据
  • 优化 Vue 项目编译文件大小
  • 带你开发类似Pokemon Go的AR游戏
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​ArcGIS Pro 如何批量删除字段
  • #前后端分离# 头条发布系统
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (2)STL算法之元素计数
  • (arch)linux 转换文件编码格式
  • (ibm)Java 语言的 XPath API
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (南京观海微电子)——I3C协议介绍
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net 4.0并行库实用性演练
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET MVC之AOP
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET文档生成工具ADB使用图文教程
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @KafkaListener注解详解(一)| 常用参数详解
  • @Responsebody与@RequestBody