显示base64编码的pdf

Posted

tags:

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

参考技术A 将base64格式的pdf在新标签页打开:

var objstr = '';

objstr += ('<object width="100%" height="100%" data="data:application/pdf;base64,');

objstr += (base64string);

objstr += ('" type="application/pdf">');

objstr += ('<embed src="data:application/pdf;base64,');

objstr += (base64string);

objstr += ('" type="application/pdf" />');

objstr += ('</object>');

var win = window.open("#", "_blank");

var title = "标题";

win.document.write('<html><title>'+ title +'</title><body style="margin: 0px;">');

win.document.write(objstr);

win.document.write('</body></html>');

layer = jQuery(win.document);

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,保存

以上是关于显示base64编码的pdf的主要内容,如果未能解决你的问题,请参考以下文章

用 Java 编码的 Base64 图像不显示在 HTML 中

BASE64编码的图片在网页中的显示问题的解决

Base64 编码图像未显示 [重复]

将 Base64 编码图像加密为另一个有效的 Base64 编码图像

显示base64编码的pdf

如何在 Angular 6 中显示以 base64 格式编码的图像?