公司最近有个需求,需要把列表的不同电子单证进行预览和打印。功能有单个电子单证的预览及打印和所有电子单证的集合一键打印。
第一个功能,经过上网查资料对比,最终选择了vue-pdf。这个组件也很好的实现了我的需求。
这是vue-pdf的核心代码。需要把后台返回的base64转成blobpdf文件流,然后再转成组件需要的pdf文件路径。
还有后面的一个需求,一键打印。一开始想着前端去把需要打印的文件进行流合并。后来试了一段时间放弃了。最终通过友好协商,抛给后台去进行流的合并。然后拿到后台返回的pdf文件流。通过iframe结合print-js组件一起解决这个问题。
这里需要注意的是,传入print-js组件的printable这个参数,是不带头的。也就是吧base64文件头去掉。然后再iframe路径上拼好。