Pdf与Base64编码之间的转换

Posted 孙悟空2015

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pdf与Base64编码之间的转换相关的知识,希望对你有一定的参考价值。

在我们的工作有时候我们需要将图片或者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,保存

以上是关于Pdf与Base64编码之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

如何在kotlin android中将pdf文件编码为base64字符串

Java Base64 编码解码方案总结

像图像或 PDF 文件这样的 MIME 类型不需要 base64 或以其他方式编码吗?

Java如何进行Base64的编码(Encode)与解码(Decode)?

Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码

java 图片文件Base64编码与二进制编码格式互相转换