前端有时会需要去处理pdf的预览,经过笔者各种测试和验证后,纯前端来讲,还是pdf.js比较好用(关于通过设置调节pdf清晰度的问题,个人的结论是:提升有限)
先贴上插件地址:pdf.js
我这里放的是自己项目用的版本,如果想用其他版本,修改后面对应的版本号即可。官方给出的稳定版本是:v2.6.347
好了,不废话,我们直接说怎么用。
1、先下载下来想要的版本
2、文件接压缩后,把pdf整个文件夹(文件内容如下图)全部拷贝至你的项目目录中。
3、页面中使用时,支持两种方式:pdf文件路径、pdf base64流
(1)文件路径:
项目目录位置 + /pdf/web/viewer.html?file=" +pdfSrc
(2)文件流:
项目目录位置 + /pdf/web/viewer.html?file=" + encodeURIComponent(pdfBlobURL)
下面代码是如何把pdf base64流转换为可用的blobURL:
var pdfBlob = base64ToPdfBlob(pdfStreamData);
var pdfBlobURL = (window.URL || window.webkitURL).createObjectURL(pdfBlob);
// base64流转blob
function base64ToPdfBlob(base64Data) {
base64Data = base64Data.replace(/[\n\r]/g, "");
var u8arr = dataToU8Array(base64Data);
var pdfBlob = new Blob([u8arr], {
type: "application/pdf;chartset=UTF-8",
});
return pdfBlob;
}
// data to Uint8Array
function dataToU8Array(data) {
var bstr = window.atob(data),
len = bstr.length,
u8arr = new Uint8Array(len);
while (len--) {
u8arr[len] = bstr.charCodeAt(len);
}
return u8arr;
}