zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Mvc的路由
    Java编程思想——第14章 类型信息(一)RTTI
    让你的sql开启氮气加速
    CountDownLatch和CycliBarrier介绍
    Java编程思想——第21章 并发
    emojy表情的小问题
    ThreadPoolExecutor使用方法
    Java8两大特性(一)——Stream
    js保留两位小数(不四舍五入)
    vant popup能不能插在body下
  • 原文地址:https://www.cnblogs.com/yinyl/p/15783692.html
Copyright © 2011-2022 走看看