pdf.js与base64结合转换成pdf文件实现在线预览

2025-11-01 13:50:20

1、因为不允许缓存文件,所以就要考虑怎样把文件传输给前端,虽然用流传输是个不错的方式,但是考虑到是网络传输,base64更具有一些优势。(虽然转换后体积会变大)

pdf.js与base64结合转换成pdf文件实现在线预览

2、又因为要考虑一个良好的浏览器兼容性,我选择了插件pdf.js,在IE9+和主流浏览器中使用起来很是方便。

pdf.js与base64结合转换成pdf文件实现在线预览

1、首先,服务端调用FileInputStream,读取pdf文件流,然后将读入的字节流转成base64字符串。然后发送给前置服务器。前置服务器做转发,发给前端。

pdf.js与base64结合转换成pdf文件实现在线预览

1、现在问题的关键来了,前端拿到pdf的base64流如何处理呢。

在这里,我们先不使用pdf.js官方提供的预览页面(viewer.html)了,只需要引入pdf.js 和pdf.worker.js即可。

pdf.js与base64结合转换成pdf文件实现在线预览

2、然后先构建一个简单的页面结构

<div id='container'>

<div id='pop'>

</div>

</div>

pdf.js与base64结合转换成pdf文件实现在线预览

3、然后首先将获得base64字符串做处理,替换掉多余的空格和换行符(FireFox会自动无视这些空格和换行,但IE不行),然后使用浏览器自带的atob方法,base64转为数组。(想当于对base64的解码)

pdf.js与base64结合转换成pdf文件实现在线预览

4、然后将解码后的值传给PDFJS.getDocument(),交给pdf.js解析就好了,pdf就可以在浏览器中预览了。

pdf.js与base64结合转换成pdf文件实现在线预览

pdf.js与base64结合转换成pdf文件实现在线预览

5、原理:pdf.js本身就是基于流去读取pdf文件的,所以将处理后的pdf文件流直接赋值给PDFJS,是允许的,还避免了做跨域的处理。

pdf.js与base64结合转换成pdf文件实现在线预览

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢