`

驱动打印

    博客分类:
  • Java
阅读更多
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());
			     }
	}
}
分享到:
评论

相关推荐

    c#驱动打印com打印usb打印lpt口打印

    根据给定的文件信息,我们可以总结出一系列与C#中不同接口打印相关的知识点,包括COM口打印、USB口打印、LPT口打印以及驱动打印。此外,还涉及到打印设备类型、编程语言、日志类型、文档信息结构以及设备信息类等...

    Java驱动打印示例

    Java驱动打印示例,适用POS系统服务器后台IP、端口打印。系统安装相关印机驱动及添加印机后即可使用。

    指令打印和驱动打印测试工程.rar

    本项目"指令打印和驱动打印测试工程.rar"聚焦于热敏打印机通过USB接口进行打印的方法,具体包括指令打印和驱动打印两种模式,并且是在Visual Studio 2019(VS2019)环境下,利用Microsoft Foundation Classes (MFC)...

    USB接口打印机直接打印(无需驱动)

    - **功能受限**:无驱动打印可能无法充分利用打印机的所有高级功能,比如扫描、复印、无线网络连接等,这些通常需要专用驱动来支持。 - **性能可能下降**:通用驱动可能无法优化打印机的性能,打印速度和质量可能...

    delphi7 无驱动打印线程池

    "无驱动打印"是指不依赖于特定打印机驱动程序的打印方式,它通过通用的接口或标准格式(如PostScript或PDF)来实现跨打印机的兼容性。线程池是一种多线程编程的技术,它可以有效地管理和调度多个并发任务,提高系统...

    58mmPOS打印机调用驱动打印源码

    在IT行业中,打印机驱动程序是...以上就是关于"58mm POS打印机调用驱动打印源码"的相关知识,这涵盖了Delphi编程、驱动程序交互、USB和并口通信等多个技术领域。理解并掌握这些内容对于开发POS系统的打印功能至关重要。

    POS58热敏打印机不使用驱动打印,并打印出条码

    在实现无驱动打印的过程中,开发者可能需要直接使用打印机的原始命令集,这些命令通常基于ESC/POS指令集,这是大多数热敏打印机遵循的标准。ESC/POS指令集包含了一系列控制打印、格式化和条码生成的命令。例如,可以...

    用指令驱动打印机打印

    这种打印方式与常见的图形驱动或应用驱动打印不同,它不依赖于特定的操作系统或软件,而是直接发送预定义的指令集给打印机,由打印机解析并执行这些指令进行打印。这种方式对于定制化需求、低级别控制以及简化打印...

    java 热敏打印机无驱动 打印票据socket工具类

    可以java直接调用 热敏打印机无驱动 打印票据socket工具类 此demo为 芯烨/xprinter 可以参考变成手册, 完成任何自己想要的小票格式

    固网HP-1101U驱动 打印服务器设置软件

    固网HP-1101U驱动是一款专为HP-1101U打印服务器设计的软件,旨在帮助用户正确地设置和管理他们的打印设备。这个驱动程序是连接打印机到网络的关键,使得打印机能够通过局域网或者互联网进行打印作业。在开始安装前,...

    C# usb 无驱动 POS打印 小票打印

    C# usb 无驱动 POS打印 小票打印 visual studio 2012 绝对可以用

    Unity3D C# 无驱动打印 小票机 打印机

    Unity3D C# 无驱动打印 小票机 打印机,在同一网段 只需要设置 IP 和端口 就可以打印

    Unity C# 无驱动打印 打印机 佳博标签机

    Unity C# 无驱动打印 打印机 佳博标签机; C#打印标签机 同理 看代码就明白 很简单

    HP470驱动打印文件

    驱动程序

    新驱动 解决偶尔打印重复问题

    "新驱动 解决偶尔打印重复问题"这个标题所暗示的关键知识点主要集中在打印机驱动程序的更新和优化,以及它如何解决打印过程中可能出现的重复问题。下面将详细讨论这两个方面。 首先,驱动程序是计算机与硬件设备...

    C# 调用BarTender驱动打印程序

    本demo为使用C#调用BarTender的驱动实现打印机打印,可以批量将BarTender的模板打印出来或导出为图片

    基于 delphi 写的无驱动 pos 打印

    3. **错误处理和兼容性**:无驱动打印可能遇到各种兼容性和通信问题,因此开发者需要编写健壮的错误处理代码,以确保在各种情况下都能正确传输打印指令。 4. **数据编码与解码**:为了将文本、图片等内容转换为...

    使用打印机驱动打印源数据,控制USB类型小票打印机

    该类主要实现通过打印驱动程序,向打印机发送原始数据类型,包括ESC指令,字符串。打印机驱动使用EPSON的就可以,只是在端口选择时,选择需要的端口类型。

    施乐700打印驱动

    施乐700打印驱动是针对施乐700系列打印机设计的重要软件组件,它在计算机与打印机之间起到了桥梁的作用,使得操作系统能够有效地控制和通信,实现高质量的打印任务。这款驱动程序通常包含了各种必要的控制代码和配置...

Global site tag (gtag.js) - Google Analytics