当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

驱动打印

发表于: 2013-12-27   作者:不懂事的小屁孩   来源:转载   浏览:
摘要: java驱动打印代码: PrintTest.print(printMap, map1,Main.printname); import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphic
java驱动打印代码:

PrintTest.print(printMap, map1,Main.printname);



import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.attribute.HashAttributeSet;
import javax.print.attribute.standard.PrinterName;



public class PrintTest  implements Printable{

	@Override
	public int print(Graphics gra, PageFormat pf, int pageIndex)throws PrinterException 
	{
		  Component c = null;
	      //print string
	      String str1 = "打印出的字"; 
	       //转换成Graphics2D
	      Graphics2D g2 = (Graphics2D) gra;
	      //设置打印颜色为黑色
	      g2.setColor(Color.black);

	      //打印起点坐标
	      double x = pf.getImageableX();
	      double y = pf.getImageableY();

	      switch(pageIndex)
	      {
	         case 0:
		           //设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)
		           //Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput
		           Font font = new Font("微软雅黑", Font.PLAIN, 10);
		           g2.setFont(font);//设置字体
		           //BasicStroke   bs_3=new   BasicStroke(0.5f);
		           float[]   dash1   =   {2.0f};
		           //设置打印线的属性。
		           //1.线宽 2、3、不知道,4、空白的宽度,5、虚线的宽度,6、偏移量
		           g2.setStroke(new   BasicStroke(0.5f,   BasicStroke.CAP_BUTT,   BasicStroke.JOIN_MITER,   2.0f,   dash1,   0.0f));
		           //g2.setStroke(bs_3);//设置线宽
		           float heigth = font.getSize2D();//字体高度
		           // -1- 用Graphics2D直接输出
		           //首字符的基线(右下部)位于用户空间中的 (x, y) 位置处
		           //g2.drawLine(10,10,200,300);

		           //Image src = Toolkit.getDefaultToolkit().getImage("D:\\EclipseWorkSpace3.1\\Kfc-wuxi\\WebRoot\\image\\KFC.jpg");
		           //g2.drawImage(src,(int)x,(int)y,c);
		           //int img_Height=src.getHeight(c);
		           //int img_width=src.getWidth(c);
		          // int m = 30;
		           //int u = 0;
		           g2.setFont(font);//设置字体
		           g2.drawString(str1, (float)x, (float)y+1*heigth);
		           //g2.drawLine((int)x,(int)(y+1*heigth+img_Height+10),(int)x+10,(int)(y+1*heigth+img_Height+10));
		          // g2.drawImage(src,(int)x,(int)(y+1*heigth+img_Height+11),c);
		         return PAGE_EXISTS;

	         default:
	         return NO_SUCH_PAGE;
	      }
	  		
	  	}
	public static void main(String[] args) 
	{
		print();
	}
	
	public static void print()
	{
//	    通俗理解就是书、文档
			    Book book = new Book();
			    //    设置成竖打
			    PageFormat pf = new PageFormat();
			    pf.setOrientation(PageFormat.PORTRAIT);
			    //    通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
			    Paper p = new Paper();
			    p.setSize(137,840);//纸张大小
			    p.setImageableArea(0,0,137,840);//A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72
			    pf.setPaper(p);
			    //    把 PageFormat 和 Printable 添加到书中,组成一个页面
			    book.append(new PrintTest(), pf);
	
			     //获取打印服务对象
			     PrinterJob job = PrinterJob.getPrinterJob();
			     // 设置打印类
			     job.setPageable(book);
			     HashAttributeSet hs = new HashAttributeSet();
			     //打印机出口名
			     String printerName="58";
			     hs.add(new PrinterName(printerName,null));
			     PrintService[] pss = PrintServiceLookup.lookupPrintServices(null, hs);
			     if(pss.length==0)
			     {
			       System.out.println("无法找到打印机:"+printerName);
			       return ;
			     }
			     try
			     {
			       job.setPrintService(pss[0]);
			       job.print();
			     }
			     catch (PrinterException ex)
			     {
			       System.out.println(ex.getMessage());
			     }
	}
}

驱动打印

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
对于TS2008来说,打印的问题有了easy print,工作应该轻松了不少。而对于TS2003来说,要应付几下几
1.printk 1.1 printk的优点: a. 在中断中调用 b. 在进程上下文中调用 c.在持有锁时调用 d.在多处理
转载自: http://blog.csdn.net/wjcsharp/article/details/6161712 DbgPrint会发送一个消息给内核调
4 打印
system.drawing.printing 命名空间 printerSettings 打印机设置类 PageSettings 页面设置类 PrintPa
惠普(HP) LaserJet Pro M1136 MFP 黑白多功能激光一体机 (打印 复印 扫描) 新入手的打印机,如
测试: 经前天的测试,最终还是没有明显的定夺到底是驱动的问题,还是打印机的问题。但是按照可能性
惠普(HP) LaserJet Pro M1136 MFP 黑白多功能激光一体机 (打印 复印 扫描) 新入手的打印机,如
简单题目。 设 f(i)表示将 单词1 到单词i 这i个单词打印到若干行的最小代价,而且,这个最小代价
class Rhombus { public static void main(String[] args){ test1(7); test2(7); } public static v
首先,让我们来看看,一个最简单的的数列打印,从1一直累加到20。也就是1+2+3+4+5.... 做这种题有很多
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号