0

我开发了一个销售点系统。我的问题是最后我现在需要创建带有公司徽标和其他内容的自定义收据。我需要添加销售数据并打印收据。我坚信 XML 可以用于此,尽管我不知道如何。任何想法将不胜感激

4

2 回答 2

1

如果您有 XML 格式的数据,我推荐Apache FOP 。使用 FOP,您可以轻松更改样式,并且可以打印为 PDF、html 页面...

做这些事情的非常有用的工具!

于 2012-07-16T10:49:41.583 回答
1

你很幸运...我为我妻子的生意做了同样的事情。我使用内置打印框架来完成这项工作。这样做的类相当大,所以这里是亮点:

创建一个扩展 import java.awt.print.Printable 的类

创建一个 Graphics2D 对象并在其上打印您想要的所有内容,然后简单地覆盖 print() 方法,使其看起来像这样:

@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {

    if (prevPage == pageIndex) {
        linesRendered = prevRendered;
    }
    prevPage = pageIndex;
    prevRendered = linesRendered;

    if (linesRendered >= lines.size())  {
        logger.fine("No further pages to send to printer.");
        return NO_SUCH_PAGE;
    } else {
        // render here
        // ...
        return PAGE_EXISTS;
    }
}

检查是必要的,因为 Java 倾向于为同一页面多次调用该方法。然后打印你,只需要做:

public void printInvoice() {
    PrinterJob printJob = PrinterJob.getPrinterJob();

    if (printJob.printDialog()) {
        try {
            InvoicePrinterHelper iph =
                    new InvoicePrinterHelper(...);
            printJob.setPrintable(iph);
            printJob.print();
        } catch (PrinterException pe) {
            System.out.println("Error printing: " + pe);
        }
    }
}

我拿出了很多来节省空间,但这会起作用。我花了很长时间才把它弄好,但至少你不必像我一样挖掘。谷歌“可打印”界面,你会得到许多其他的例子。

我建议您使用 Graphics2D 并使用抗锯齿,否则字体看起来很糟糕。

于 2012-07-16T10:33:41.440 回答