- 浏览: 688215 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
di1984HIT:
学习了,学习了!
Tomcat的URL中文乱码解决以及传输优化 -
arottenapple:
...
我的二十一天CoreJava 学习笔记 -
黯淡流觞:
...
我的二十一天CoreJava 学习笔记 -
onlyOneToOne:
wsc830719 写道@RequestMapping(val ...
spring mvc3中 ResponseBody中文乱码 -
waj_615:
但是打印订单不是简单的string 啊
用java实现打印功能
用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。
下面代码实现了简单的打印功能:
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.RenderingHints; import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; import java.awt.font.TextAttribute; import java.awt.font.TextLayout; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; 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 java.text.AttributedString; import javax.swing.JApplet; public class PrintTest implements Printable{ /** * @param Graphic指明打印的图形环境 * @param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点) * @param pageIndex指明页号 **/ public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException { System.out.println("pageIndex="+pageIndex); Component c = null; //print string String str = "中华民族是勤劳、勇敢和富有智慧的伟大民族。"; //转换成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, 9); 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();//字体高度 System.out.println("x="+x); // -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); //System.out.println("img_Height="+img_Height+"img_width="+img_width) ; g2.drawString(str, (float)x, (float)y+1*heigth+img_Height); g2.drawLine((int)x,(int)(y+1*heigth+img_Height+10),(int)x+200,(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) { // 通俗理解就是书、文档 Book book = new Book(); // 设置成竖打 PageFormat pf = new PageFormat(); pf.setOrientation(PageFormat.PORTRAIT); // 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。 Paper p = new Paper(); p.setSize(590,840);//纸张大小 p.setImageableArea(10,10, 590,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); try { //可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印 //boolean a=job.printDialog(); //if(a) //{ job.print(); //} } catch (PrinterException e) { e.printStackTrace(); } } } 这个例子实现了打印字符串,线(包括虚线)和打印图片。而且通过Paper的setImageableArea可以设置打印的区域和边距,让开发者随意的设置打印的位置。 下面的打印代码没有设置打印区域,默认为打印纸张的区域和边距,比如我们一般用的A4纸,打印的起点X和Y坐标则是72,72。 无区域设置的代码: 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.RenderingHints; import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; import java.awt.font.TextAttribute; import java.awt.font.TextLayout; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; 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 java.text.AttributedString; import javax.swing.JApplet; public class PrintTest1 implements Printable{ /** * @param Graphic指明打印的图形环境 * @param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点) * @param pageIndex指明页号 **/ public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException { System.out.println("pageIndex="+pageIndex); Component c = null; //print string String str = "中华民族是勤劳、勇敢和富有智慧的伟大民族。"; //转换成Graphics2D Graphics2D g2 = (Graphics2D) gra; //设置打印颜色为黑色 g2.setColor(Color.black); /*Paper paper = pf.getPaper();//得到页面格式的纸张 paper.setSize(500,500);//纸张大小 paper.setImageableArea(0,0,500,500); //设置打印区域的大小 System.out.println(paper.getWidth()); System.out.println(paper.getHeight()); pf.setPaper(paper);//将该纸张作为格式 */ //打印起点坐标 double x = pf.getImageableX(); double y = pf.getImageableY(); switch(pageIndex){ case 0: //设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称) //Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput Font font = new Font("新宋体", Font.PLAIN, 9); g2.setFont(font);//设置字体 //BasicStroke bs_3=new BasicStroke(0.5f); float[] dash1 = {4.0f}; g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 4.0f, dash1, 0.0f)); float heigth = font.getSize2D();//字体高度 System.out.println("x="+x); //使用抗锯齿模式完成文本呈现 /*g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);*/ // -1- 用Graphics2D直接输出 //首字符的基线(右下部)位于用户空间中的 (x, y) 位置处 //g2.drawLine(10,10,200,10); Image src = Toolkit.getDefaultToolkit().getImage("d://logo.gif"); g2.drawImage(src,(int)x,(int)y,c); int img_Height=src.getHeight(c); int img_width=src.getWidth(c); //System.out.println("img_Height="+img_Height+"img_width="+img_width) ; g2.drawString(str, (float)x, (float)y+1*heigth+img_Height); g2.drawLine((int)x,(int)(y+1*heigth+img_Height+10),(int)x+200,(int)(y+1*heigth+img_Height+10)); g2.drawImage(src,(int)x,(int)(y+1*heigth+img_Height+11),c); // -2- 直接构造TextLayout打印 /*FontRenderContext frc = g2.getFontRenderContext(); TextLayout layout = new TextLayout(str, font, frc); layout.draw(g2, (float)x, (float)y+2*heigth);*/ // -3- 用LineBreakMeasurer进行打印 /*AttributedString text = new AttributedString(str); text.addAttribute(TextAttribute.FONT, font); LineBreakMeasurer lineBreaker = new LineBreakMeasurer(text.getIterator(), frc); //每行字符显示长度(点) double width = pf.getImageableWidth(); //首字符的基线位于用户空间中的 (x, y) 位置处 Point2D.Double pen = new Point2D.Double (100, y+3*heigth); while ( (layout = lineBreaker.nextLayout( (float) width)) != null){ layout.draw(g2, (float)x, (float) pen.y); pen.y += layout.getAscent(); }*/ return PAGE_EXISTS; default: return NO_SUCH_PAGE; } } public static void main(String[] args) { //获取打印服务对象 PrinterJob job = PrinterJob.getPrinterJob(); PageFormat pageFormat = job.defaultPage();//得到默认页格式 job.setPrintable(new PrintTest1());//设置打印类 try { //可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印 //boolean a=job.printDialog(); //if(a) //{ job.print(); //} } catch (PrinterException e) { e.printStackTrace(); } } }
发表评论
-
jetty快速开发时自实现提供jndi服务
2012-07-11 17:21 2257jndi一般是由容器提供,或是启动第三方服务jar包启动。 ... -
spring mvc3中 ResponseBody中文乱码
2012-07-11 14:48 4717使用spring mvc3的@ResponseBody注解以期 ... -
用Java Service Wrapper将java程序制作成系统服务进程
2012-05-23 14:35 10985用途 在做完一个项目程序后,有时会有两种需求想法。 1.在 ... -
根据颜色检查图片中的产品是否合格
2012-04-23 17:13 1414受朋友之托,做了一个小软件。只是一个练手,现将思路重现。 需 ... -
仿log4j定制自己的Log工具类
2012-03-02 16:27 3456原由: log4j是很强大,可每次使用还要加入log4j包, ... -
自制简易提醒器
2012-02-29 19:50 1359每次烧水和吃饭都忘了时间,就想要一个小闹钟。可网上的软件要不就 ... -
Log4j配置备查
2012-02-29 11:09 1205配置日志信息输出目的地,其语法为: log4j.append ... -
因练习正则而感受到丰富的解题思路
2011-11-14 15:07 1962不久前,在正则上终于可以登堂入室了,因担心久不练习而使其荒废, ... -
正则研究心得
2011-10-21 16:49 971自己感觉已经在正则上登堂入室了,终于也能体会到它的 ... -
正则表达式截取再整合字符串
2011-10-21 15:44 1501在百度知道中又看到一问题,有意思,可惜 ... -
找出一个字符串中由同一个字符组成的最长子串
2011-10-21 15:15 2105找出一个字符串中由同一个字符组成的最长子串 这是 ... -
设计模式核心笔录
2011-05-25 18:38 1077脑图内容整理成的PD ... -
struts2 iterator双重叠迭取值
2010-03-10 21:02 1261效果:Map<String,List<Derpa ... -
打包Zip文件下载
2010-03-10 12:19 1997项目里要把当个文件单 ... -
断点下载功能
2010-03-10 12:16 1506项目中要用到下载功能,发现一个断点下载的文章,还不错,归案备 ... -
页面头信息资料
2010-03-10 11:45 1813要做下载单个图片和多个图片打包后下载功能,收集了一下页面头信 ... -
JAVA WEB程序中添加定时器
2010-02-21 08:56 1062//这是我的定时器类, ... -
url中有加号
2010-02-05 09:27 3146url 中有些字符被转义,比如空格被编码成加号,于是传 ... -
java实现文件下载
2010-02-03 14:00 5127一、采用RequestDispatcher的方式进 ... -
session失效时间
2010-02-03 13:33 1821session-config元素为Web应用中的javax.s ...
相关推荐
java调用打印机实现word打印功能java调用打印机实现word打印功能
以上就是使用Java实现打印功能的主要知识点,涵盖从设置打印参数到绘制内容的所有步骤。需要注意的是,实际的打印任务可能需要根据具体需求进行调整,比如添加页眉页脚、处理多页打印等。此外,Java也提供了...
java实现图片的打印功能,本代码打印的是75*75的二维码,纸张大小定义为120*83,A4纸等请自行定义
### Java实现Web报表打印功能:基于iText组件的实践 #### 概述 在Web应用领域,打印功能一直是开发者面临的挑战之一。由于Web应用本质上属于瘦客户端架构,直接操作客户端设备(如打印机)存在限制。这促使业界...
在本篇文章中,我们主要讨论如何使用 Java 实现自动静默打印功能,实现无需弹出打印窗口即可直接打印的功能。下面将详细介绍实现思路、技术知识、技术细节和具体代码实现。 一、实现思路 要实现自动打印功能,我们...
在本文中,我们将深入探讨如何使用Java实现二维码批量打印,主要基于给定的标题"java 实现二维码批量打印"和描述中的技术环境。首先,我们要理解二维码(Quick Response Code)是一种二维条码,能存储大量数据,常...
综上所述,Lodop与Java的结合使用为开发高效、灵活的打印功能提供了便利,尤其适合于条码打印需求。通过合理的集成和API调用,开发者可以构建出满足各种打印场景的应用,提高工作效率,同时保证用户体验。在实际项目...
7. **打印功能**: Java提供了Java Print Service API,用于处理打印任务。开发者可以使用这个API来设置打印参数,如纸张大小、打印质量等,并将PDF文件发送到打印机。 8. **相关类文件**: `DocumentHandler.java`、...
这个"java实现打印.rar"压缩包包含了一些示例代码,旨在帮助开发者理解如何在Java中实现打印功能。以下是对这些示例文件及其可能涉及的知识点的详细解释: 1. **IwbFrameEmployee.java**: 这个文件很可能包含一个...
在IT行业中,条形码打印是一项常见的任务,特别是...通过以上步骤,你便可以在Java中实现对Zebra斑马打印机的条形码打印功能。这个过程涉及到网络编程、字符串处理以及对打印机指令的理解,是一个综合性的IT技术实践。
Java实现打印功能
这个包包含了Java打印功能的主要类和接口,如`PrinterJob`类用于创建和管理打印任务,`PageFormat`类用于定义页面布局,`Printable`接口则需要被实现以定义打印内容的生成逻辑。 3. **`PrinterJob`类** `...
在深入探讨具体实现之前,我们先来了解一下实现打印功能所需要的一些基础知识: 1. **`Graphics`** 类:这是Java中用于绘制的基本类,它提供了一系列的方法来处理屏幕或打印设备上的图像。 2. **`Graphics2D`** 类...
本文详细介绍了如何使用Java实现PDF文件的打印功能,包括单个文件的打印以及批量打印的方法。通过这些方法,开发者可以根据实际需求灵活选择合适的打印策略。同时,文中也介绍了Adobe Reader的相关命令行参数,以...
在Java编程语言中,实现打印功能是一项常见的任务,特别是在开发企业级应用时。这个"java打印功能实现demo"示例旨在教你如何利用Java的内置打印服务API来完成这一任务。以下是一些关键知识点: 1. **Java Print ...
在Java编程环境中,实现对FORM(表单)的打印功能是一...理解这些概念并正确地调用它们是成功实现打印功能的关键。在实际应用中,可能还需要处理更多细节,如错误处理、用户交互(确认打印设置等)以及优化打印性能等。
J2ME 实现蓝牙打印功能 dos.write(0x1D); dos.write(0x0C); //送黑标纸至打印起始位置
总的来说,Java实现斑马打印机的ZPL指令打印是一个实用的技术,它允许开发人员灵活地控制打印机的功能,实现各种复杂的打印需求。通过理解和使用这个项目,开发者可以快速集成斑马打印机功能到自己的应用中,提升...