[英]Cannot download base64 encoded pdf displayed in chrome browser
我在內置的 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);
我認為這是由於我展示它的方式所致,但我還沒有通過其他方式獲得成功。
編輯:將這些作為 object 和 img 標簽進行了嘗試,並且在這些標簽上出現了同樣的問題。
您的實際問題更像是您無法從新窗口下載通過data:
-URI。 旁注:微調器可以通過close()
-ing 文檔停止,但它不會影響不可操作的“另存為”。
我發現了兩個解決方法:
<!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 作為object
、 embed
和iframe
打開,我可以確認 Chrome 中的右鍵單擊+“另存為”不會對它們執行任何操作。 下載按鈕有效(同樣,至少在 Chrome 中)。
我在內置的 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 標簽以及相同的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.