Это на самом деле очень просто, не усложняйте вещи ..
window.open(URL.createObjectURL(doc.output("blob")))
или более подробный и менее эффективный версия:
let newWindow = window.open('/');
fetch(doc.output('datauristring')).then(res => res.blob()).then(blob => {
newWindow.location = URL.createObjectURL(blob);
})
(Вынужно открывать новое окно сразу после нажатия кнопки мыши, иначе Chrome заблокирует всплывающее окно. Это решение не так хорошо, поскольку происходит ненужное преобразование из datauri в blob)