java 打印

本博客主要实现图片指定位置插入文字,然后使用默认打印机实现打印功能

引入的类
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();
		}
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值