本博客主要实现图片指定位置插入文字,然后使用默认打印机实现打印功能
引入的类
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
方法如下
public static void print(){
try{
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;
//获取系统所有打印设备
PrintService[] printers = PrintServiceLookup.lookupPrintServices(
flavor, null);
for (int i = 0; i < printers.length; i++)
System.out.println(printers[i].getName());
//获取第一个默认打印设备
PrintService printer = printers[0];
DocPrintJob job = printer.createPrintJob();
//图片路径
String filePath = Thread.currentThread().getContextClassLoader().getResource("Image_00008.jpg").getPath();
BufferedImage img =ImageIO.read(new File(filePath));
Graphics g1 = img.getGraphics();
Graphics g2 = img.getGraphics();
Graphics g3 = img.getGraphics();
Graphics g4 = img.getGraphics();
Graphics g5 = img.getGraphics();
Graphics g6 = img.getGraphics();
Graphics g7 = img.getGraphics();
Graphics g8 = img.getGraphics();
g1.setColor(Color.BLACK); //字体设为黑色
g2.setColor(Color.BLACK);
g3.setColor(Color.BLACK);
g4.setColor(Color.BLACK);
g5.setColor(Color.BLACK);
g6.setColor(Color.BLACK);
g7.setColor(Color.BLACK);
g8.setColor(Color.BLACK);
//指定位置插入文字
/*((Graphics2D) g1).rotate(-(3.1415926/2),105,781); //逆时针选中90度相同坐标的文字
g1.drawString("罗兵逊", 105, 781);
((Graphics2D) g2).rotate(-(3.1415926/2),105 ,618);
g2.drawString("12345677890", 105, 618);
((Graphics2D) g3).rotate(-(3.1415926/2),135 ,775);
g3.drawString("圣安东尼奥马刺GDP",135 , 775);
((Graphics2D) g4).rotate(-(3.1415926/2),153 ,793);
g4.drawString("北京市东花市北里20号楼6单元501室", 153, 793);*/
((Graphics2D) g5).rotate(-(3.1415926/2),229 ,784);
g5.drawString("大卫·罗兵逊", 229, 784);
((Graphics2D) g6).rotate(-(3.1415926/2),229 ,622);
g6.drawString("78945612301", 229, 622);
/*((Graphics2D) g7).rotate(-(3.1415926/2),257 ,770);
g7.drawString("俄克拉荷马雷霆杜兰特", 257, 770);*/
((Graphics2D) g8).rotate(-(3.1415926/2),278 ,784);
g8.drawString("虹口区西康南路125弄34号201室 ", 278, 784);
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
ImageIO.write(img, "gif", outstream);
byte[] buf = outstream.toByteArray();
InputStream stream = new ByteArrayInputStream(buf);
Doc doc = new SimpleDoc(stream, flavor, null);
System.out.println(doc);
// print
for(int i=0; i<1; i++){
job.print(doc, null);
}
System.out.println("打印结束");
}catch(Exception e){
e.printStackTrace();
}
}