base64ToPDF以及PDFToBase64
有时候为了方便pdf文件传输,需要将pdf与base64进行相互转换,代码如下:
package com.ulic.yyl.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.xml.bind.DatatypeConverter; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class PDFFileUtils { public static void main(String[] args){ // String base64 = PDFToBase64("D:\\pdf\\测试5.pdf"); // System.out.println("结果:"+base64); // String base64Content=""; base64StringToPDF(base64Content2); } /** * 方法名: base64StringToPDF * 方法功能描述: 将base64编码内容转换为Pdf */ public static void base64StringToPDF(String base64Content){ BASE64Decoder decoder = new BASE64Decoder(); BufferedInputStream bis = null; FileOutputStream fos = null; BufferedOutputStream bos = null; try { //1.base64编码内容转换为字节数组 //byte[] bytes = decoder.decodeBuffer(base64Content); byte[] bytes = DatatypeConverter.parseBase64Binary(base64Content); ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes); bis = new BufferedInputStream(byteInputStream); //2.生成jpg图片,把图片保存到健康乐服务器 String fileName = "base64ToPDF2"; String realPath = "D:\\pdf\\"; String trueFileName=fileName+".pdf"; String imageSavePath = realPath + trueFileName; File file = new File(imageSavePath); File path = file.getParentFile(); if(!path.exists()){ path.mkdirs(); } fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); byte[] buffer = new byte[1024]; int length = bis.read(buffer); while(length != -1){ bos.write(buffer, 0, length); length = bis.read(buffer); } bos.flush(); } catch (Exception e) { e.printStackTrace(); }finally{ try { bis.close(); fos.close(); bos.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 方法名: PDFToBase64 * 方法功能描述: 将pdf文件转换为Base64编码 * @param: String sourceFile:源文件路径 * @return: String base64字符串 * @Create Date: 2019年07月03日 */ public static String PDFToBase64(String sourceFile) { BASE64Encoder encoder = new BASE64Encoder(); FileInputStream fin =null; BufferedInputStream bin =null; ByteArrayOutputStream baos = null; BufferedOutputStream bout =null; File file = new File(sourceFile); 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(); return DatatypeConverter.printBase64Binary(bytes); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { fin.close(); bin.close(); bout.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }
if you want to go fast,go alone,if you want to go far,go together
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义