Как распечатать содержимое iframe со всеми стилями.
Мне удалось получить только текст:
app.ts
let bodyUrl="https://www.w3schools.com/tags/tag_iframe.asp"
print(){
let printContents, popupWin;
printContents = document.getElementById('iframe');
var innerDoc = printContents.contentDocument || printContents.contentWindow.document;
let printBody = innerDoc.body.innerText //got the text
//get whole iframe body with styles for print?
popupWin = window.open('', '_blank', 'top=0,left=0, width=900,height=700');
popupWin.document.open();
popupWin.document.write(`
<html>
<head>
<title>My Print</title>
<style>
@media print{
.doNotPrint{
display:none;!important
}
}
</style>
</head>
<body onload="window.print();window.close()">
${printBody}
</body>
</html>`
);
popupWin.document.close();
}
html
<iframe id="iframe" class="iframe-content" [src]="bodyUrl"></iframe>
Вот решение javascript, которое я нашел:
window.frames["printf"].focus();
window.frames["printf"].print();
и используйте
<iframe id="printf" name="printf"></iframe>
В качестве альтернативы попробуйте старый добрый
var newWin = window.frames["printf"];
newWin.document.write('<body onload="window.print()">dddd</body>');
newWin.document.close();
Какпечатать содержимое iframe в TypeScript?