Java打印小票

打印小票是软件常用功能,本文简单演示了用Java实现打印小票的方法,并展示了执行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 打印小票是我们软件中常用功能,下面简单演示用Java实现打印小票

package com.Hu.Printer;

import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.HashMap;
import java.util.Map;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.attribute.HashAttributeSet;
import javax.print.attribute.standard.PrinterName;

/**
 * 定义我的打印工具类
 * 实现java.awt.print.Printable接口
 * */
public class Printer implements Printable {
    
	/**
	 * 存放要打印的数据的变量,类型可以根据自身需要,此处用map演示
	 * */
	private Map<String, String> contentMap;
	
	/**
	 * 用有参构造传递参数
	 * */
	public Printer(Map<String, String> map) {
		this.contentMap = map;
	}
	
	/**
	 * 具体的实现打印
	 * */
	@Override
	public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
		if (pageIndex > 0) {  
            return NO_SUCH_PAGE;  
        }
        Graphics2D g2d = (Graphics2D) graphics;//画笔工具
        Font titleFont = new Font("Default", Font.BOLD, 16);//设置字体样式
        Font textFont = new Font("Default", Font.PLAIN, 14);//设置字体样式
        
        g2d.setFont(titleFont);
        g2d.drawString(contentMap.get("title"), 80,20);
        g2d.setFont(textFont);
        g2d.drawString(contentMap.get("text1"), 60,50);
        g2d.drawString(contentMap.get("text2"), 60,70);
        g2d.drawString(contentMap.get("text3"), 60,90);
        g2d.drawString(contentMap.get("text4"), 60,110);
        return PAGE_EXISTS;
	}

	/**
	 * 测试打印
	 * */
	public static void main(String[] args) {
		   Map<String, String> map = new HashMap<String, String>();
		   map.put("title", "静夜思");
		   map.put("text1", "窗前明月光,");
		   map.put("text2", "疑是地上霜。");
		   map.put("text3", "举头望明月,");
		   map.put("text4", "低头思故乡。");
		   
		   Book book = new Book(); //空白页面 
	       PageFormat pf = new PageFormat();  //页面格式
	       pf.setOrientation(PageFormat.PORTRAIT);  
	       Paper p = new Paper();//打印区域  
	       p.setSize(230, 400); 
	       p.setImageableArea(5, -20, 230, 530); 
	       pf.setPaper(p); 
	       book.append(new Printer(map), pf);  			        
	       PrinterJob job = PrinterJob.getPrinterJob();
	       job.setPageable(book); 
	       HashAttributeSet hs = new HashAttributeSet();  
	       String printerName = "XP-80C";//你的小票打印机名称
	       hs.add(new PrinterName(printerName,null));  
	       PrintService[] pss = PrintServiceLookup.lookupPrintServices(null, hs);//获取系统打印机连接信息 
	       try {
				job.setPrintService(pss[0]);//加入打印任务
		   } catch (PrinterException e) {
				e.printStackTrace();
		   }
		   try {
			   job.print();//执行打印,如果要打印多张只需将此方法调几次
		   } catch (PrinterException e) {
			   e.printStackTrace();
		   }
	}

}

执行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值