显示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 中