Я работаю над проектом, который получает данные с сервера через Spring boot в виде OutputStream. На фронте я получаю PDF файл, представленный в виде массива байт. Мне нужно открыть его в новой вкладке. Для этого я использую window.open() в js коде. Вот код обработки ответа с сервера и открытия файла в новой вкладке.
fetch(options.url, options)
.then(response => {
return response.blob();
})
.then(blob => {
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = () => {
const data = reader.result
const tab = window.open();
tab.document.write("<html>" +
"<body>" +
"<embed type='application/pdf' " +
"style='position:absolute; left: 0; top: 0;' " +
"width='100%' " +
"height='100%' " +
"src='" + data +"'/>" +
"</body>" +
"</html>")
}
})
Но есть проблема после того, как открылась вкладка. Все кнопки в Chrome PDF viewer работают корректно, кроме кнопки "скачать". Ничего не происходит по нажатию на неё.
Я пробовал открывать новую вкладку с помощью
URL.createObjectURL(response.blob())
, однако браузер на мгновение открывал её и сразу же закрывал.
Есть идеи, как это решить?