用java实现打印图片和string,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,
然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。
public class CertificatePrintB extends JLabel implements Printable{private static final long serialVersionUID = 1L;
final int Length = 29;
private CertificateAFrame ca;
//private CertificateBFrame cb;
//private AnimalBFrame ab;
private String[] value;
private ImageIcon ii;
private int position[][] = new int[Length][2];
public CertificatePrintB(ChoosePrintBFrame cpb) //打印
{
//this.cb = cb;
LocateSetB();
value = cpb.getInfoStrings();
ii = cpb.getImg();
}
public void LocateSetB() //打印坐标分布
position[0][0]=140;
position[0][1]=110;
position[1][0]=380;
position[1][1]=110;
position[2][0]=140;
position[2][1]=140;
position[3][0]=380;
position[3][1]=140;
position[4][0]=135;
position[4][1]=169;
position[5][0]=135;
position[5][1]=200;
position[6][0]=135;
position[6][1]=228;
position[7][0]=135;
position[7][1]=257;
position[8][0]=385; //签名
position[8][1]=261;
position[9][0]=365; //签发日期
position[9][1]=318;
position[10][0]=420;
position[10][1]=318;
position[11][0]=470;
position[11][1]=318;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
}
public int print(Graphics g, PageFormat pf, int pageIndex)
{
System.out.println(pageIndex);
if(pageIndex > 0)
{
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)g;
for(int i = 0; i < value.length+1; i++)
{
int j = i;
int[] temp = position[i];
int x = temp[0];
int y = temp[1];
if(i==8)
{
g2d.drawImage(ii.getImage(), x, y,this);
continue;
}
if(i>8)
{
j=i-1;
}
String str = value[j];
//System.out.println(j);
g2d.drawString(str, x, y);
}
return Printable.PAGE_EXISTS;
}
public void printInfo()
{
PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
Paper paper = pf.getPaper();
double pageWidth, pageHeight;
if(ca == null) {
pageWidth = 1655;
pageHeight = 1098;
} else {
pageWidth = 1631;
pageHeight = 2214;
}
paper.setSize(pageWidth, pageHeight);
paper.setImageableArea(0, 0, pageWidth, pageHeight);
pf.setPaper(paper);
pj.setPrintable(this, pf);
for(int i=0; i<value.length; ++i)
{
System.out.println(value[i]);
System.out.println(position[i][0]+"\t"+position[i][1]);
}
System.out.println(pageWidth + " " + pageHeight);
if(pj.printDialog())
{
try
{
pj.print();
}
catch(PrinterException e)
{
e.printStackTrace();
}
}
}
}
用java实现打印,就只要先把要打印的内容画出来,然后调用打印机就行啦~