📄 printnumjob.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 + -