如何在javascript中打开base64编码的pdf

vin*_*ini 4 javascript pdf jquery

var ajaxSettings = {
            url: urls.orders.list+"/"+singlePacket.requests[0].order_id+"/labels", //request labels the status will change to ShipperAssigned
            type: "GET",
            contentType: "application/json",
            headers: { "Authorization": "Bearer " + api.access_token },
            success: function (resp) {
                if (resp != null) {
                    var d = btoa(unescape(encodeURIComponent(resp)));
                    console.log(d);
                    if(d != null)
                    window.open('data:application/pdf;base64, ' + d);
                }

            },
            error: function (jqXhr, textstatus, errorThrown) {
                console.log("Status: " + jqXhr.status + ": error thrown in downloadLabels: " + errorThrown);
                hide_shipping_progress_modal();
            }
        };
        $.ajax(ajaxSettings);
Run Code Online (Sandbox Code Playgroud)

当我打开pdf时,我得到一个空白的pdf.我的回答是spring mvc的输出流结果

请帮忙.

Kev*_*own 8

对于Chrome和Firefox,您可以直接在对象标记上使用base64数据:

    var objbuilder = '';
    objbuilder += ('<object width="100%" height="100%"      data="data:application/pdf;base64,');
    objbuilder += (base64PDF);
    objbuilder += ('" type="application/pdf" class="internal">');
    objbuilder += ('<embed src="data:application/pdf;base64,');
    objbuilder += (base64PDF);
    objbuilder += ('" type="application/pdf" />');
    objbuilder += ('</object>');
Run Code Online (Sandbox Code Playgroud)

然后添加到现有页面或打开一个新窗口:

var win = window.open("","_blank","titlebar=yes");
        win.document.title = "My Title";
        win.document.write('<html><body>');
        win.document.write(objbuilder);
        win.document.write('</body></html>');
        layer = jQuery(win.document);
Run Code Online (Sandbox Code Playgroud)

您可以查看此页面背后的Javascript http://www.cloudformatter.com/css2pdf这是一种PDF格式化服务.Chrome和Firefox可以嵌入页面或显示在新窗口中,IE不支持base64 in object(或其他任何东西),因此此代码会触发下载.