HISUI
关于base64字符串预览成PDF
2023年03月31日 14时12分

imedical中集成pdfjs来预览pdf文件,有以下几个公共方法,以便产品组调用

预览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'})

预览BASE64字符串

// 弹出界面
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;
}
上一篇: 下一篇:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

访问量: 379534