Java实现打印功能_第1页
Java实现打印功能_第2页
Java实现打印功能_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java实现打印功能用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。下面代码实现了简单的打印功能:importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Component;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.lmage;import

2、java.awt.Toolkit;importjava.awt.RenderingHints;importjava.awt.font.FontRenderContext;importjava.awt.font.LineBreakMeasurer;importjava.awt.font.TextAttribute;importjava.awt.font.TextLayout;importjava.awt.geom.Point2D;importjava.awt.image.Bufferedlmage;importjava.awt.print.Book;importjava.awt.print.Pa

3、geFormat;importjava.awt.print.Paper;importjava.awt.print.Printable;importjava.awt.print.PrinterException;importjava.awt.print.PrinterJob;importjava.text.AttributedString;importjavax.swing.JApplet;icblpuE$PrintTestimplementsPrintable!LIparamGraphic指明打印的图形环境paramPageFormat指明打印贞格式页面大小以点为计量单位,11英才的1/72,

4、1英寸为25.4毫米。A4纸大致为595X842点parampagelndex指明页号Epublicintprint(Graphicsgra,PageFormatpf,intpageIndex)throwsPrinterExceptionISystem.out.println("pageIndex="+pageIndex);|Componentc=null;I/printstringIStringstr="中华民族是勤劳、勇敢和富有智慧的伟大民族。";I/转换成Graphics2DIGraphics2Dg2=(Graphics2D)gra;I/设置打印颜

5、色为黑色Ig2.setColor(Color.black);/打印起点坐标Idoublex=pf.getImageableX();Idoubley=pf.getImageableY();I5switch(pageIndex)Icase0:I/设置打印字体字体名称、样式和点大小字体名称可以是物理或者逻辑名称/Java平台所定义的五种字体系歹U:Serif、SansSerif、MonospacedDialog和DialogInputFontfont=newFont("新宋体",Font.PLAIN,9);Ig2.setFont(font);/设置字体/BasicStrokebs

6、_3=newBasicStroke(0.5f);Jfloatdash1=2.0f;/设置打印线的届性。/1.线宽2、3、不知道,4、空白的宽度,5、虚线的宽度,6、偏移量Ig2.setStroke(newBasicStroke(0.5f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,2.0f,dash1,0.0f);/g2.setStroke(bs_3);/设置线宽Ifloatheigth=font.getSize2D();/字体高度ISystem.out.println("x="+x);/-1-用Graphics2D直接输出/首字

7、符的基线(右下部)位丁用户空间中的(x,y)位置处/g2.drawLine(10,10,200,300);IImagesrc=Toolkit.getDefaultToolkit().getImage("D:EclipseWorkSpace3.1Kfc-wuxiWebRootimageKFC.jpg");g2.drawImage(src,(int)x,(int)y,c);intimg_Height=src.getHeight(c);intimg_width=src.getWidth(c);/System.out.println("img_Height="+

8、img_Height+"img_width="+img_width);I_Ig2.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);Ig2.drawImage(src,(int)x,(int)(y+1*heigth+img_Height+11),c);IreturnPAGE_EXISTS;default:returnNO_SUCH_P

9、AGE;voidmain(Stringargs)通俗理解就是书、文档IIIIIpublicstaticI/Bookbook=newBook();/设置成竖打PageFormatpf=newPageFormat();pf.setOrientation(PageFormat.PORTRAIT);/通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。IPaperp=newPaper();Ip.setSize(590,840);/纸张大小p.setImageableArea(10,10,590,840);/A4(595X842)设置打印区域,其实0,0应该是72,72,因为A4纸

10、的默认X,Y边距是72Ipf.setPaper(p);/把PageFormat和Printable添加到书中,组成一个页面Ibook.append(newPrintTest(),pf);/获取打印效劳对象PrinterJobjob=PrinterJob.getPrinterJob();/设置打印类job.setPageable(book);I5try(/可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印|/booleana=job.printDialog();I/if(a)/(Ijob.print();/卜"5catch(PrinterExceptione)

11、(e.printStackTrace();这个例子实现了打印字符申,线包括虚线和打印图片。而且通过Paper的setImageableArea可以设置打印的区域和边距,让开发者随意的设置打印的位置。下面的打印代码没有设置打印区域,默认为打印纸张的区域和边距,比方我们一股用的A4纸,打印的起点X和Y坐标那么是72,72。无区域设置的代码:importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Component;importjava.awt.Font;importjava.awt.Graphics;importjava.awt

12、.Graphics2D;importjava.awt.Image;importjava.awt.Toolkit;importjava.awt.RenderingHints;importjava.awt.font.FontRenderContext;importjava.awt.font.LineBreakMeasurer;importjava.awt.font.TextAttribute;importjava.awt.font.TextLayout;importjava.awt.geom.Point2D;importjava.awt.image.BufferedImage;importjava

13、.awt.print.Book;importjava.awt.print.PageFormat;importjava.awt.print.Paper;importjava.awt.print.Printable;importjava.awt.print.PrinterException;importjava.awt.print.PrinterJob;importjava.text.AttributedString;importjavax.swing.JApplet;publicclassPrintTest1implementsPrintableE/*I*paramGraphic指明打印的图形环

14、境paramPageFormat指明打印贞格式页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595X842点parampageIndex指明页号卜*/Jpublicintprint(Graphicsgra,PageFormatpf,intpageIndex)throwsPrinterExceptionISystem.out.println("pageIndex="+pageIndex);IComponentc=null;I/printstringStringstr="中华民族是勤劳、勇敢和富有智慧的伟大民族。"I/转换

15、成Graphics2DGraphics2Dg2=(Graphics2D)gra;/设置打印颜色为黑色g2.setColor(Color.black);/*Paperpaper=pf.getPaper();/得到页面格式的纸张paper.setSize(500,500);/纸张大小Ipaper.setImageableArea(0,0,500,500);/设置打印区域的ISystem.out.println(paper.getWidth();ISystem.out.println(paper.getHeight();卜pf.setPaper(paper);/将该纸张作为格式*/打印起点坐标Ido

16、ublex=pf.getImageableX();Idoubley=pf.getImageableY();switch(pageIndex)Icase0:/设置打印字体字体名称、样式和点大小字体名称可以是物理或者逻辑名称/Java平台所定义的五种字体系歹U:Serif、Dialoginput=newFont("新宋体",Font.PLAIN,9);II0.5f);$IBasicStroke.CAP_BUTT,g2.setFont(font);/设置字体/BasicStrokebs_3=newfloatdashlg2.setStroke(newBasicStroke(=(4.

17、0f;BasicStroke(0.5f,BasicStroke.JOIN_MITER,4.0f,daSansSerif、MonospacedDialog和Fontfontsh1,0.0f);floatheigth=font.getSize2D();/字体高度ISystem.out.println("x="+x);I/使用抗锯齿模式完成文本呈现$/*g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,IRenderingHints.VALUE_TEXT_ANTIALIAS_ON);*/-1-用Graphics2D营

18、以输出/首字符的基线(右下部)位丁用户空间中的(x,y)位置处II/g2.drawLine(10,10,200,10);IImagesrc=Toolkit.getDefaultToolkit().getImage("d:/logo.gif");Ig2.drawImage(src,(int)x,(int)y,c);intimg_Height=src.getHeight(c);Iintimg_width=src.getWidth(c);/System.out.println("img_Height="+img_Height+"img_width=&

19、quot;+img_width);Ig2.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打印-/*FontRenderContextfrc=g2.getFontRenderContext();ITextLayoutlayout=newTextLayout(str,layout.draw(g2,(float)x,(float)y+2*heigth/-3-用LineBreakMeasurer进行打印tring(str);/*AttributedStringtext=newAttributedStext.addAttribute(TextAttribute.FONT,font);LineBreakMeasurerlineBreaker

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论