gpt4 book ai didi

javascript - 如何在 Angular 中实现打印功能?

转载 作者:行者123 更新时间:2023-12-02 22:31:54 24 4
gpt4 key购买 nike

我正在尝试在我的发票应用程序中实现打印功能,但是,我的打印功能仅对我有效一次 - 即仅在第一次单击时有效。当我尝试再次单击时,未触发单击功能。当我检查 console.log 时,抛出以下错误:错误类型错误:无法读取 null 的属性“postMessage”

这是我尝试过的:

printInvoice() {
const printContents = document.getElementById('print-index-invoice').innerHTML;
const originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
<div class="modal fade" id="modalIndexInvoicePreview" tabindex="-1" role="dialog">
<button type="submit" class="btn btn-info btn-lg mt-2 position-absolute" (click)="printInvoice()">
<i class="fa fa-print icon-print"></i>Print</button>
<div class="modal-dialog modalContent">

<div class="modal-content modalIndexInvoicePreview" id="print-index-invoice">
<div class="modal-header div-logo">
<img class="logo-invoice" [src]="logoUrl">
<div>
<b>Invoice|Receipt|Attachment</b>
</div>
</div>
</div>
</div>
</div>

最佳答案

有两种方法可以实现打印功能。首先,您可以利用 CSS 媒体,这将允许您将媒体用作“打印”。

第二个选项是将 CSS 附加到您的打印部分。您可以轻松地启用媒体“在打印时”将外部样式表附加到打印模块。目前,我已在打印模块中启用了 Bootstrap 。您可以使用自己的样式表代替 Bootstrap 。

访问jsfiddle.net/rdtzvf2c/1/

正如您在结果中看到的,顶部文本和图像被拉到中心,这是通过打印 div 时动态应用的引导 CSS 实现的。

如果需要任何其他帮助,请告诉我。

function printDiv() {
var divToPrint = document.getElementById('print-index-invoice');
var newWin = window.open('', 'Print-Window');
newWin.document.open();
newWin.document.write('<html><link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" media="print"/><body onload="window.print()">' + divToPrint.innerHTML + '</body></html>');
newWin.document.close();
setTimeout(function() {
newWin.close();
}, 10);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="modal-content modalIndexInvoicePreview" id="print-index-invoice">
<div class="container col-md-12">
<div class="text-center">
This is right aligned!
<img src="https://www.gstatic.com/webp/gallery3/1.png" class=" rounded mx-auto d-block" alt="...">
</div>
</div>
<div class="modal-header div-logo">
<div>
<b>Invoice|Receipt|Attachment</b>



</div>
</div>
</div>
<input type='button' id='btn' value='Print' onclick='printDiv();'>

关于javascript - 如何在 Angular 中实现打印功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58873088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com