java - 增加 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);
}
}
解决方案
推荐阅读
- javascript - jquery 中使用 math.round() 添加和删除值的问题
- sql - 如何编写单个 SQL 查询以挑选出具有多个条件的子组,这些条件与特征的序列数有关
- java - 使用 oracle JDBC 驱动程序打印 PrepareStatement
- android - ArrayList.add 不适用于 AsyncTask
- phpstorm - 为什么我无法在 PhpStorm 中保存数据
- php - 如何将数组变成更小的数组?在php中
- reactjs - 在没有状态reactjs的列表中交换元素
- python - 'SELECT LAST_INSERT_ID()' 处的语法错误
- javascript - “$.extend({}, options)” 可以在 JQuery 中使用“委托”功能吗?
- android - 访问 Google fit 可以在本地测试应用程序中使用,但不能通过 Google Play