⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printnumjob.java

📁 这是一个给车票打印号码的程序
💻 JAVA
字号:
package com.flying.business;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.PrintJob;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.io.File;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.Timer;

import javax.print.PrintService;
import javax.print.ServiceUI;

public class PrintNumJob implements Printable{
	
	private final double MM = 72 / 25.4;//将页面设置的毫米单位转换成pixl
	
	public long[] printNums = new long[6];//存储每页需要打印的数据
	private GeneratePrintingData gpd;//
	private PageConfiguration pageConfiguration;//打印纸张的设置
	private PrinterJob printJob = null;
	private int printerID = 3;
	PageFormat documentPageFormat;//页面格式
	boolean firstPage = false;
	
	File logFile = null;
	
	DecimalFormat numberFormat = new DecimalFormat("00000000");
	
	/**
	 * 实现Printable中的print方法
	 */
	public int print(Graphics g, PageFormat pageFormat, int page){
		/*int firstNumX = (int)(this.pageConfiguration.getLeftPageMargin() * MM 
				+ this.pageConfiguration.getLeftFrameMargin() * MM);
		//第一组数据的X
		int firstNumY = (int)(this.pageConfiguration.getTopPageMargin() * MM
				+ this.pageConfiguration.getFrameHeight() * MM
				- this.pageConfiguration.getNumberHeight() * MM);
		//数据的Y
		int secondNumX = (int)(this.pageConfiguration.getLeftPageMargin() * MM
				+ this.pageConfiguration.getSafeLine() * MM);
		//第二组数据的X
*/
		
		float firstNumX = (float)(this.pageConfiguration.getLeftPageMargin() * MM 
				+ this.pageConfiguration.getLeftFrameMargin() * MM);
		//第一组数据的X
		float firstNumY = (float)(this.pageConfiguration.getTopPageMargin() * MM
				+ this.pageConfiguration.getFrameHeight() * MM
				- this.pageConfiguration.getNumberHeight() * MM);
		//数据的Y
		float secondNumX = (float)(this.pageConfiguration.getLeftPageMargin() * MM
				+ this.pageConfiguration.getSafeLine() * MM);
		//第二组数据的X
		
		
		Graphics2D g2d = (Graphics2D)g;
		g2d.setColor(Color.BLACK);//设置字体颜色
		
		g2d.translate(documentPageFormat.getImageableX(), documentPageFormat.getImageableY());
		if (page == 0) {
			for (int i = 0; i < printNums.length; i++) {
				float currY = firstNumY
						+ ((float)((this.pageConfiguration.getFrameHeight()+ this.pageConfiguration.getFrameSpaceBetween()
								)* MM )) * i;
				
				//int currY = firstNumY + ((int) (68 * MM ))* i;
				g2d.drawString("No:" + numberFormat.format(this.printNums[i]),
						firstNumX, currY);
				g2d.drawString("No:" + numberFormat.format(this.printNums[i]),
						secondNumX, currY);
				System.out.println(this.printNums[i]);//将数据 输出到控制台
				
		}
		
		return Printable.PAGE_EXISTS;
		}else
			return Printable.NO_SUCH_PAGE;

    }
	/**
	 * 创建一个打印任务,?括对打印页面的设置
	 *
	 */
	private void createPrintJob(){
		//设置打印页?
		Paper paper = new Paper();
		
		//获取页面的高度和空白区域,并从MM单位转换为pxie单位
		double pageW = pageConfiguration.getPageWidth() * MM;
		double pageH = pageConfiguration.getPageHeight() * MM;
		double leftMargin = pageConfiguration.getLeftPageMargin() * MM;
		double topMargin = pageConfiguration.getTopPageMargin() * MM;
		
		paper.setSize(pageW, pageH);
		paper.setImageableArea(leftMargin, topMargin, pageW - leftMargin - MM, pageH - topMargin - MM);
		
		documentPageFormat = new PageFormat();
		documentPageFormat.setPaper(paper);
		documentPageFormat.setOrientation(PageFormat.PORTRAIT);
		
		printJob = PrinterJob.getPrinterJob();
		printJob.setPrintable(this, documentPageFormat);
	}

	/**
	 * 打印开始
	 *
	 */
	public void beginPrint1()
	{
		if(this.printJob == null)
			this.createPrintJob();
		
		try{
			if(printJob.printDialog()){
				while(this.gpd.generatePrintintData(this.printNums)){
					printJob.print();
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	
	public void beginPrint2()
	{
		int i=1;
		if(this.printJob == null)
			this.createPrintJob();
		
		try{
			if(printJob.printDialog()){
				while(i>0){
					
					printJob.print();
					i--;
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void setGpd(GeneratePrintingData gpd) {
		this.gpd = gpd;
	}

	public void setPageConfiguration(PageConfiguration pageConfiguration) {
		this.pageConfiguration = pageConfiguration;
	}

	public void setPrinterID(int printerID) {
		this.printerID = printerID;
	}
	
        public void setPrintNums(long []printNums){
  		this.printNums=printNums;
	}	

	private void writePrintLog(long printedNum){
		System.out.println(printedNum);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -