imedical中集成pdfjs来预览pdf文件,有以下几个公共方法,以便产品组调用
// 预览/web/temp/pdf下的文件,弹出新窗口
websys_createWindow('../scripts_lib/pdfjs-2.0.943/web/viewer.html?file=../temp/pdf/my.pdf');
// 预览/web/temp/pdf下的文件,弹出新窗口
websys_createWindow('../scripts_lib/pdfjs-2.0.943/web/viewer.html?file=https://ip/my.pdf');
// 预览/web/temp/pdf下的文件,弹出modal层
websys_showModal({width:1200,height:600,url:'../temp/pdf/my.pdf'})
// 弹出界面
var localUrl = websys_base64ToURL("data:application/pdf;base64,AbcD...DDDE"); // blob:http://127.0.0.1/d215983d-ef79-44dd-be51-8c23016ceced
websys_createWindow('../scripts_lib/pdfjs-2.0.943/web/viewer.html?file=' + encodeURIComponent(localUrl);
// 弹出modal层
websys_showModal({width:1200,height:600,pdfBase64:'data:application/pdf;base64,AbcD...DDDE'});
其中公共的BASE64转换代码如下(支持IE11):
/**
* 把base64字符串转成流对象
* @param {String} base64Data 包含文件类型头的Base64字符串,如: data:application/pdf;base64,AbcD...DDDE
* @returns 对应的文件流Blob对象
*/
function websys_base64ToBlob(base64Data) {
var result = base64Data.replace(/[\r\n]/g, "");
var arr = result.split(','),
fileType = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
l = bstr.length,
u8Arr = new Uint8Array(l);
while (l--) {
u8Arr[l] = bstr.charCodeAt(l);
}
return new Blob([u8Arr], {
type: fileType
});
}
/**
* 把base64字符串转成URL路径
* @param {String} base64Data 如: data:application/pdf;base64,AbcD...DDDE
* @returns 本地URL地址 blob:http://127.0.0.1/d215983d-ef79-44dd-be51-8c23016ceced
*/
function websys_base64ToURL(base64Data) {
var url = URL.createObjectURL(websys_base64ToBlob(base64Data));
return url;
}
访问量: 509670