0

我正在尝试使用 Print.js 库使用热敏 POS 打印机打印付款收据。我可以使用 printjs 成功打印页面。但是按照 A4 页面,打印件带有额外的边距。
有没有办法打印它以适应 58 毫米和页边距?
如果给出使用 JavaScript 进行打印的任何替代方案,那将非常有帮助。以下是我的作品。

HTML & JS

<button id="print-receipt">print to pos</button>
<div id="invoice-print-div" class="hidden">
    <div class="text-center" style="width:58mm;background-color:red;">
        <h4>alpha</h4>
        <table border="0">
            <tr>
                <th>Item</th>
                <th>Qty</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>abc</td>
                <td>1</td>
                <td>120</td>
            </tr>
            <tr>
                <td>pqr</td>
                <td>2</td>
                <td>240</td>
            </tr>
            <tr>
                <td>xyz</td>
                <td>4</td>
            <td>360</td>
            </tr>
        </table>
    </div>
</div>
<script>
$("#print-receipt").on("click", function() {
    printJS("invoice-print-div", "html");
});
</script>
4

1 回答 1

1

1-您可以将对象作为参数传递,而不是使用带有默认两个参数的 printJS():

printJS('invoice-print-div', 'html');应替换为:

printJS({printable: 'invoice-print-div', type: 'html',style: ['@page { size: A4; margin: 0mm;} body {margin: 0;} h4 {margin:0}'], targetStyles: ['*']});

请注意,当涉及到实际打印时,参数对象中的属性样式是您可以传递应该应用于正在打印的 html 的自定义样式的地方。

我在stackblitz中做了一个演示,请检查一下。

有关更多信息,您可以查看PrintJS 配置选项

2- 当您要求 PrintJS 的一些替代品时,您可以查看 jsPDF 库在此处进行一些解释。

于 2020-12-30T19:34:42.587 回答