Java實現(xiàn)打印功能_第1頁
Java實現(xiàn)打印功能_第2頁
Java實現(xiàn)打印功能_第3頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java實現(xiàn)打印功能用java實現(xiàn)打印,java.awt中提供了一些打印的API,要實現(xiàn)打印,首先要獲得打印對象,然后繼承Printable實現(xiàn)接口方法print,以便打印機進行打印,最后用用Graphics2D直接輸出直接輸出。下面代碼實現(xiàn)了簡單的打印功能: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指明打印的圖形環(huán)境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/轉(zhuǎn)換成Graphics2DIGraphics2Dg2=(Graphics2D)gra;I/設(shè)置打印顏

5、色為黑色Ig2.setColor(Color.black);/打印起點坐標Idoublex=pf.getImageableX();Idoubley=pf.getImageableY();I5switch(pageIndex)Icase0:I/設(shè)置打印字體字體名稱、樣式和點大小字體名稱可以是物理或者邏輯名稱/Java平臺所定義的五種字體系歹U:Serif、SansSerif、MonospacedDialog和DialogInputFontfont=newFont("新宋體",Font.PLAIN,9);Ig2.setFont(font);/設(shè)置字體/BasicStrokebs

6、_3=newBasicStroke(0.5f);Jfloatdash1=2.0f;/設(shè)置打印線的屆性。/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);/設(shè)置線寬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();/設(shè)置成豎打PageFormatpf=newPageFormat();pf.setOrientation(PageFormat.PORTRAIT);/通過Paper設(shè)置頁面的空白邊距和可打印區(qū)域。必須與實際打印紙張大小相符。IPaperp=newPaper();Ip.setSize(590,840);/紙張大小p.setImageableArea(10,10,590,840);/A4(595X842)設(shè)置打印區(qū)域,其實0,0應(yīng)該是72,72,因為A4紙

10、的默認X,Y邊距是72Ipf.setPaper(p);/把PageFormat和Printable添加到書中,組成一個頁面Ibook.append(newPrintTest(),pf);/獲取打印效勞對象PrinterJobjob=PrinterJob.getPrinterJob();/設(shè)置打印類job.setPageable(book);I5try(/可以用printDialog顯示打印對話框,在用戶確認后打??;也可以直接打印|/booleana=job.printDialog();I/if(a)/(Ijob.print();/卜"5catch(PrinterExceptione)

11、(e.printStackTrace();這個例子實現(xiàn)了打印字符申,線包括虛線和打印圖片。而且通過Paper的setImageableArea可以設(shè)置打印的區(qū)域和邊距,讓開發(fā)者隨意的設(shè)置打印的位置。下面的打印代碼沒有設(shè)置打印區(qū)域,默認為打印紙張的區(qū)域和邊距,比方我們一股用的A4紙,打印的起點X和Y坐標那么是72,72。無區(qū)域設(shè)置的代碼: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指明打印的圖形環(huán)

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/轉(zhuǎn)換

15、成Graphics2DGraphics2Dg2=(Graphics2D)gra;/設(shè)置打印顏色為黑色g2.setColor(Color.black);/*Paperpaper=pf.getPaper();/得到頁面格式的紙張paper.setSize(500,500);/紙張大小Ipaper.setImageableArea(0,0,500,500);/設(shè)置打印區(qū)域的ISystem.out.println(paper.getWidth();ISystem.out.println(paper.getHeight();卜pf.setPaper(paper);/將該紙張作為格式*/打印起點坐標Ido

16、ublex=pf.getImageableX();Idoubley=pf.getImageableY();switch(pageIndex)Icase0:/設(shè)置打印字體字體名稱、樣式和點大小字體名稱可以是物理或者邏輯名稱/Java平臺所定義的五種字體系歹U:Serif、Dialoginput=newFont("新宋體",Font.PLAIN,9);II0.5f);$IBasicStroke.CAP_BUTT,g2.setFont(font);/設(shè)置字體/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/使用抗鋸齒模式完成文本呈現(xiàn)$/*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-直接構(gòu)造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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論