网站首页 > 精选教程 正文
一、创建相应的工具类
public class Base64ToPdfUtil {
/**
* @param base64sString base64
* @throws IOException
*/
public static void base64StringToPDF(String base64sString) throws IOException {
BASE64Decoder decoder = new BASE64Decoder();
BufferedInputStream bin = null;
FileOutputStream fout = null;
BufferedOutputStream bout = null;
try {
// 将base64编码的字符串解码成字节数组
byte[] bytes = decoder.decodeBuffer(base64sString);
// 创建一个将bytes作为其缓冲区的ByteArrayInputStream对象
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// 创建从底层输入流中读取数据的缓冲输入流对象
bin = new BufferedInputStream(bais);
// 指定输出的文件
File file = new File("D:\\test.pdf");
// 创建到指定文件的输出流
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 (IOException e) {
e.printStackTrace();
} finally {
if(!StringUtils.isEmpty(bin)){
bin.close();
}
if(!StringUtils.isEmpty(fout)){
fout.close();
}
if(!StringUtils.isEmpty(bout)){
bout.close();
}
}
}
/**
*
* @param file 文件
* @return
* @throws IOException
*/
public static String PDFToBase64(File file) throws IOException {
BASE64Encoder encoder = new BASE64Encoder();
FileInputStream fin =null;
BufferedInputStream bin =null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bout =null;
try {
fin = new FileInputStream(file);
bin = new BufferedInputStream(fin);
baos = new ByteArrayOutputStream();
bout = new BufferedOutputStream(baos);
byte[] buffer = new byte[1024];
int len = bin.read(buffer);
while(len != -1){
bout.write(buffer, 0, len);
len = bin.read(buffer);
}
//刷新此输出流并强制写出全部缓冲的输出字节
bout.flush();
byte[] bytes = baos.toByteArray();
return encoder.encodeBuffer(bytes).trim();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(!StringUtils.isEmpty(bout)){
bout.close();
}
if(!StringUtils.isEmpty(baos)){
baos.close();
}
if(!StringUtils.isEmpty(bin)){
bin.close();
}
if(!StringUtils.isEmpty(fin)){
fin.close();
}
}
return null;
}
/**
* base64字符串转化成图片
*
* @param imgData 图片编码
*
* @param imgFilePath 存放到本地路径
*
* @return
* @throws IOException
*/
public static boolean GenerateImage(String imgData, String imgFilePath) throws IOException {
// 对字节数组字符串进行Base64解码并生成图片
// 图像数据为空
if (imgData == null)
return false;
BASE64Decoder decoder = new BASE64Decoder();
OutputStream out = null;
try {
out = new FileOutputStream(imgFilePath);
// Base64解码
byte[] b = decoder.decodeBuffer(imgData);
for (int i = 0; i < b.length; ++i) {
// 调整异常数据
if (b[i] < 0) {
b[i] += 256;
}
}
out.write(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(!StringUtils.isEmpty(out)){
out.flush();
out.close();
}
return true;
}
}
}
猜你喜欢
- 2024-11-25 干货|一文搞定 uiautomator2 自动化测试工具使用
- 2024-11-25 Java去除PDF文件中的图片
- 2024-11-25 2021 年 Node.js 开发人员学习路线图
- 2024-11-25 Java之base64转化成图片文件
- 2024-11-25 wangEditor 实现ctrl+v粘贴图片并上传、word粘贴带图片
- 2024-11-25 姐姐带我玩转java设计模式(内附照片)- 代理模式
- 2024-11-25 Java 给Excel图表设置背景颜色和背景图片
- 2024-11-25 一个支持将html转为PDF、图片,且支持PDF加水印的项目
- 2024-11-25 使用SpringBoot Schedule实现定时任务动态添加、修改、删除等操作
- 2024-11-25 Java,OpenCV,图像美化,图片翻转,拉普拉斯平滑(Laplace)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)