【问题标题】:Java Formatter receipt printing issueJava Formatter 收据打印问题
【发布时间】:2015-01-04 09:36:21
【问题描述】:

我正在设计使用 PrinterJob 类在 Java 中打印的收据。

我需要一些建议。

基于我在这里看到的示例。

http://www.javadocexamples.com/java_source/__/re/Receipt.java.html

如何将上面示例中给出的输出存储在 jTextPanel 中? 然后我将使用 PrinterJob 类打印出 jTextPanel 中的文本内容。

当我从我的 POS 打印机打印出 jTextPanel 中的文本内容时,我想得到以下输出。

以下是我目前拥有的代码。

String s = String.format("Item Qty Price", "%-15s %5s %10s\n");
        String s1 = String.format("---- --- -----","%-15s %5s %10s\n");
        String output = s + s1;

        jTextPane1.setText(output);

        PrinterJob printerJob = PrinterJob.getPrinterJob();
        PageFormat pageFormat = printerJob.defaultPage();
        Paper paper = new Paper();
        paper.setSize(180.0, (double) (paper.getHeight() + lines * 10.0));
        paper.setImageableArea(margin, margin, paper.getWidth() - margin * 2, paper.getHeight() - margin * 2);
        pageFormat.setPaper(paper);
        pageFormat.setOrientation(PageFormat.PORTRAIT);
        printerJob.setPrintable(jTextPane1.getPrintable(null, null), pageFormat);
        printerJob.print();

关于如何进行的任何建议?

【问题讨论】:

  • 看看这个Stackoverflow post。你所寻求的答案就在那里。
  • 谢谢!检查出来

标签: java formatter point-of-sale receipt


【解决方案1】:

您将参数传递给String.format 的顺序是错误的。格式字符串首先出现(带有百分号的那个),然后传递多个参数,格式字符串中的每个百分比都有一个参数。

所以在你的情况下:

String s = String.format("%-15s %5s %10s\n", "Item", "Qty", "Price");
String s1 = String.format("%-15s %5s %10s\n", "----", "---", "-----");

您还需要订单项的格式字符串。 根据您的输出,可能是:

"%-15s %5d %10.2f\n"

(您将用作:

String line = String.format("%-15s %5d %10.2f\n", itemName, quantity, price);

)

如果您想截断超过 15 个字符的 itemName,您可以使用:

// "%.15s %5d %10.2f\n"
String line = String.format("%.15s %5d %10.2f\n", itemName, quantity, price);

【讨论】:

  • 商品名很长的情况如何处理?
  • 我在答案中添加了解决方案。
  • 如何将长 itemName 换成多行?
  • @Smith 然后您需要在 for 循环中自己吐出 itemName;除最后一行外,每一行只有 15 个字符的 itemName 部分,最后一行也有数量和价格。但是如果你想很好地换行,你需要在单词边界处进行,除非单词已经超过 15 个字符。
猜你喜欢
  • 2016-10-21
  • 2020-07-12
  • 2013-05-01
  • 1970-01-01
  • 2021-03-21
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多