Pdf与Base64编码之间的转换

来源:互联网 发布:python 画图 编辑:程序博客网 时间:2024/05/17 21:06

在我们的工作有时候我们需要将图片或者pdf文件转换为Base64编码,然后从服务器端下载传输到本地,在这里我列举下两者之间的转换方法:
Base64编码转换为pdf:

/**     * Description: 将base64编码内容转换为Pdf     * @param  base64编码内容,文件的存储路径(含文件名)     * @Author fuyuwei     * Create Date: 2015年7月30日 上午9:40:23     */    public static void base64StringToPdf(String base64Content,String filePath){        BASE64Decoder decoder = new BASE64Decoder();        BufferedInputStream bis = null;        FileOutputStream fos = null;        BufferedOutputStream bos = null;        try {            byte[] bytes = decoder.decodeBuffer(base64Content);//base64编码内容转换为字节数组            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes);            bis = new BufferedInputStream(byteInputStream);            File file = new File(filePath);            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{            closeStream(bis, fos, bos);        }    }

pdf转换为Base64编码:

/**     * Description: 将pdf文件转换为Base64编码     * @param  要转的的pdf文件     * @Author fuyuwei     * Create Date: 2015年8月3日 下午9:52:30     */    public static String PDFToBase64(File file) {        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{            try {                fin.close();                bin.close();                bout.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }

我们在直接使用这两个类的时候,Eclipse会报错:
BASE64Encoder encoder = new sun.misc.BASE64Encoder();
BASE64Decoder decoder = new sun.misc.BASE64Decoder();
解决方法如下:
右击项目—->build path—–>configure build path
这里写图片描述
这里写图片描述
这里写图片描述
点击OK,保存

1 0
原创粉丝点击