我开发了一个销售点系统。我的问题是最后我现在需要创建一个带有公司徽标和其他东西的自定义收据。我需要添加销售数据并打印收据。我坚信XML可以用于此,虽然我不知道如何。任何想法都将受到高度赞赏
答案 0 :(得分:1)
你很幸运...我为妻子的生意做了同样的事情。我使用build in print框架来实现这个功能。这样做的课程相当大,所以这里是亮点:
创建一个扩展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并使用抗锯齿,否则字体看起来非常糟糕。
答案 1 :(得分:1)
如果你有XML格式的数据,我建议Apache FOP。使用FOP,您可以轻松更改样式,并且可以打印到PDF,html页面......
非常有用的工具!