gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:31:42 29 4
gpt4 key购买 nike

我在内置的 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);

我认为这是由于我展示它的方式所致,但我还没有通过其他方式获得好运。

编辑:将这些作为对象和 img 标签进行了尝试,并且在这些标签上出现了同样的问题。

最佳答案

您的实际问题更像是您无法从新窗口下载通过 data:-URI 提供的内容。旁注:微调器可以通过 close() 关闭文档,但它不会影响不可操作的“另存为”。

我发现了两个解决方法:

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

<!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>

这不是一个可运行的片段,因为这里的安全沙箱(在 StackOverflow 上)阻止了这两种尝试。
“window(tab)”变体将 pdf 打开为 objectembediframe,我可以确认右击+“另存为” "在 Chrome 中不会对它们做任何事情。下载按钮有效(同样,至少在 Chrome 中)。

关于javascript - 无法下载 chrome 浏览器中显示的 base64 编码的 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59109423/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com