新しいウィンドウでPDFとしてbase64データを開くために次のコードを使用しています
var pdf=response.data.base64;
var doc = document.createElement("a");
doc.href ='data:application/octet-stream;base64,' + pdf;
doc.target = "blank";
doc.click();
$window.open('data:application/pdf;base64,' + pdf);
これはchromeバージョン56.0.2924.87では正常に機能しますが、バージョン61.0.3163.100では機能しません[スクリーンショットを参照]
サンプルプランカーコード
var pdfResult = data_.data.info.result.result;
let pdfWindow = window.open("")
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64, " + encodeURI(pdfResult) + "'></iframe>")
これは、ブラウザーのタブにbase64 pdfを表示するのに役立ちます。
AngularJSを使用して同様の問題に直面しました。これは私が管理した方法であり、私の場合、ファイルをURLからarraybufferとしてロードします。それが役に立てば幸い。
$http({
method: 'GET',
url: '/api/transaction-file/'+id,
responseType:'arraybuffer'
}).then(function(response){
var file = new Blob([response.data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}, function(response){
//Error
});
私にはあまりにも問題があり、私の友人ペトルスとの私の解決策は:
const win = window.open("","_blank");
let html = '';
html += '<html>';
html += '<body style="margin:0!important">';
html += '<embed width="100%" height="100%" src="data:application/pdf;base64,'+base64+'" type="application/pdf" />';
html += '</body>';
html += '</html>';
setTimeout(() => {
win.document.write(html);
}, 0);