首页 > 解决方案 > 增加 JTextPane 的打印大小

问题描述

我正在热敏打印机中打印 JTextPane。is 代码工作正常,但是当 JTextPane 的内容超过 MediaSizeName.INVOICE 的大小时,打印会被剪裁。从 JavaDoc 中可以看出,发票大小为 5.5 英寸 x 8.5 英寸。有没有办法根据 JTextPane 的首选高度将宽度固定为 5.5 英寸和动态高度。

private void printSlip(String body){
    JTextPane slip = new JTextPane();
    slip.setContentType("text/html");
    slip.setFont(new Font(Font.SANS_SERIF, 3, 5));
    String slipText = "<html><center><h1 style=\"margin-bottom: 1px;\">Cafe</h1></center>";
    slipText +=body;
    slipText += "<center><p>Thanks for the visit.</p></center></html>";
    slip.setText(slipText);
    slip.setSize(slip.getWidth(),slip.getPreferredSize().height);
    try {
        PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
        attr_set.add(MediaSizeName.INVOICE);
        attr_set.add(Sides.TWO_SIDED_SHORT_EDGE);

        slip.print(null, null, false, null, attr_set, false);


    } catch (java.awt.print.PrinterException ex) {
        JOptionPane.showMessageDialog(null, "Error: Printing Receipt. "+ex);
    }
}

标签: javaprinting

解决方案


推荐阅读