public int print(Graphics gra, PageFormat pf, int pageIndex)
throws PrinterException {
if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) gra;
g2d.setFont(new Font("黑体", Font.PLAIN, 8));
g2d.drawString("等 位 排 单 号", 50, 0);
g2d.drawString("-------------------------------------", 7, 15);
g2d.drawString("手 机 号 码:" + "15113377898", 7, 30);
g2d.drawString("领 号 日 期:" + "2015-11-23", 7, 45);
g2d.drawString("-------------------------------------", 7, 60);
g2d.setFont(new Font("宋体", Font.PLAIN, 8));
g2d.drawString("小 号", 7, 75);
g2d.setFont(new Font("宋 体", Font.PLAIN, 8));
g2d.drawString("您 之 前 还 有" + 5 + "桌 客 人 在 等 待", 7, 90);
g2d.drawString("-------------------------------------", 7, 105);
g2d.drawString("*打 印 时 间:" + "2015-11-23 17:41" + "*", 7, 120);
g2d.drawString("店 名:" + "小 代 之 家", 7, 135);
return PAGE_EXISTS;
}
public static void test() {
//ReadData();
// 通俗理解就是书、文档
int height = 20 + 3 * 15 + 20;
Book book = new Book();
// 设置成竖打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT); // LANDSCAPE表示竖打;PORTRAIT表示横打;REVERSE_LANDSCAPE表示打印空白
// 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
Paper p = new Paper();
p.setSize(216, 841); // 纸张大小(590, 840)表示A4纸
p.setImageableArea(0, 0, 216, 841); // A4(595 X
// 842)设置打印区域,其实0,0应该是72,72
// ,因为A4纸的默认X,Y边距是72
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到书中,组成一个页面
book.append(new TestPrint(), pf);
// 获取打印服务对象
PrintService pss[]=PrinterJob.lookupPrintServices();
PrintService ps = pss[0];
PrinterJob job = PrinterJob.getPrinterJob();
System.out.print(job.getJobName());
System.out.print(job.getPrintService());
// 设置打印类
job.setPageable(book);
try {
// 可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印
boolean a=job.printDialog();
if(a)
{
job.print();
}
} catch (PrinterException e) {
e.printStackTrace();
}
}
具体代码如上面,打印出来的效果
完全看不清,字都挤在一起了,纸的宽度是76mm,求大神指教。
或者有没有更好的调用针式打印机的方法