Существует множество решений для этого на SO, я пробовал большинство из них, но, к сожалению, не повезло ..
Мой код:
<iframe id="printWindow" name="printWindow" height="0" width="0"></iframe>
printOrder() {
const iframeElement: HTMLIFrameElement = document.getElementById('printWindow') as HTMLIFrameElement;
if(typeof iframeElement === 'undefined') {
this.errorMessage = 'Could not print order! Iframe not found.';
return;
}
// Setting the print url on the iframe src
iframeElement.setAttribute('src', this.printUrl);
// Reload the print window to fetch new src
iframeElement.contentWindow.location.reload();
// Focussing the window and printing
setTimeout(function() {
iframeElement.contentWindow.focus();
iframeElement.contentWindow.print();
}, 300);
}
Что происходит (в Chrome) заключается в том, что функция printOrder()
загружает PDF-файл с правильным содержанием страницы из this.printUrl
.
Он также открывает окно печати, однако не отображает правильное содержимое страницы внутри окна печати. Вместо этого он показывает «пустую страницу».
Переменная this.printUrl
должна генерироваться динамически, поэтому я установил ее на sr c через скрипт.