Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法下载chrome浏览器中显示的base64编码pdf_Javascript_Google Chrome_Pdf - Fatal编程技术网

Javascript 无法下载chrome浏览器中显示的base64编码pdf

Javascript 无法下载chrome浏览器中显示的base64编码pdf,javascript,google-chrome,pdf,Javascript,Google Chrome,Pdf,我正在内置的chrome查看器中显示base64编码的文件。无论是jpg还是PDF,我都无法通过按钮或右键单击下载。但是,所有其他功能(如旋转和打印)都有效。。显示的选项卡标题只是带有微调器的“加载”。我可以在firefox中下载它 let fileDisplayUrl = '<iframe src="' + 'data:' + mimeType + ';base64,' + base64Contents + '"frameborder="0" style="border:0; top:0

我正在内置的chrome查看器中显示base64编码的文件。无论是jpg还是PDF,我都无法通过按钮或右键单击下载。但是,所有其他功能(如旋转和打印)都有效。。显示的选项卡标题只是带有微调器的“加载”。我可以在firefox中下载它

let fileDisplayUrl = '<iframe src="' + 'data:' + mimeType + ';base64,' + base64Contents + '"frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;"></iframe>';
let win = window.open();       
win.document.write(fileDisplayUrl);
让fileDisplayUrl='';
let win=window.open();
win.document.write(fileDisplayUrl);
我想这是因为我展示它的方式,但我还没有在其他方面运气好


编辑:尝试将这些作为对象和img标签,并在这些标签上出现相同的问题

您的实际问题更像是无法从新窗口下载通过
数据:
-URI提供的内容。旁注:旋转器可以通过
close()
-ing文档停止,但不会影响不工作的“另存为”

我发现了两个变通方法:

  • 在当前窗口中打开数据(通过“iframe”按钮可以做到这一点,然后可以通过右键单击下载文档,尽管在Chrome中其名称默认为“download.pdf”)。它可能是具有短文档/小图像的选项
  • 可以提供一个用于下载的显式按钮,在这种情况下,还可以提供文件名。“窗口(选项卡)”按钮在示例中就是这样做的。虽然通常情况下,将完全相同的编码数据移动两次看起来不太好,但这毕竟是在浏览器中本地发生的

  • 
    提供头衔
    让pdf="2)2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 P0CmFpbGVyCjw8Ci9Sb290IDMgMCBSCj4+CiUlRU9G”;
    函数doFrame(){
    设frm=document.createElement(“iframe”);
    frm.style=“边框颜色:黑色”;
    frm.src=“数据:应用程序/pdf;base64,”+pdf;
    文件.正文.附件(frm);
    }
    函数doWindow(){
    让wnd=open(“,Date.now());
    让doc=wnd.document.open();
    文件写入(“
    ”); 文件写入(“对象

    ”; 文件写入(“嵌入

    ”; 文件写入(“IFrame
    ”; doc.close(); } 窗口(选项卡)
    iframe
    这不是一个可运行的代码段,因为这里的安全沙箱(在StackOverflow上)阻止了这两种尝试。

    “window(tab)”变体以
    object
    embed
    iframe
    的形式打开pdf,我可以确认在Chrome中右键单击+“另存为”对它们没有任何作用。下载按钮可以工作(至少在Chrome中也可以).

    当pdf显示在iframe上时,我们是否可以关闭下载?这不是答案。请创建新问题。
    <!DOCTYPE html>
    <html>
        <head>
            <title>TODO supply a title</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <script>
                let pdf="JVBERi0xLjIgCjkgMCBvYmoKPDwKPj4Kc3RyZWFtCkJULyA5IFRmKFRlc3QpJyBFVAplbmRzdHJlYW0KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCA1IDAgUgovQ29udGVudHMgOSAwIFIKPj4KZW5kb2JqCjUgMCBvYmoKPDwKL0tpZHMgWzQgMCBSIF0KL0NvdW50IDEKL1R5cGUgL1BhZ2VzCi9NZWRpYUJveCBbIDAgMCA5OSA5IF0KPj4KZW5kb2JqCjMgMCBvYmoKPDwKL1BhZ2VzIDUgMCBSCi9UeXBlIC9DYXRhbG9nCj4+CmVuZG9iagp0cmFpbGVyCjw8Ci9Sb290IDMgMCBSCj4+CiUlRU9G";
                function doFrame(){
                    let frm=document.createElement("iframe");
                    frm.style="border-color:black";
                    frm.src="data:application/pdf;base64,"+pdf;
                    document.body.appendChild(frm);
                }
                function doWindow(){
                    let wnd=open("",Date.now());
                    let doc=wnd.document.open();
                    doc.write("<a href='data:application/pdf;base64,"+pdf+"' download='small.pdf'>Download</a><br>");
                    doc.write("Object<br><object type='application/pdf' data='data:application/pdf;base64,"+pdf+"'></object><br>");
                    doc.write("Embed<br><embed type='application/pdf' src='data:application/pdf;base64,"+pdf+"'><br>");
                    doc.write("IFrame<br><iframe src='data:application/pdf;base64,"+pdf+"'/>");
                    doc.close();
                }
            </script>
        </head>
        <body>
            <button onclick="doWindow()">window(tab)</button><br>
            <button onclick="doFrame()">iframe</button><br>
        </body>
    </html>