




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
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.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.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;publicclassPrintTestimplementsPrintable/*paramGraphic指明打印的圖形環(huán)境*paramPageFormat指明打印頁格式(頁面大小以點為計量單位,1點為1英才的1/72,1英寸為25.4毫米。A4紙大致為595842點)*parampageIndex指明頁號*/publicintprint(Graphicsgra,PageFormatpf,intpageIndex)throwsPrinterExceptionSystem.out.println(pageIndex=+pageIndex);Componentc=null;/printstringStringstr=中華民族是勤勞、勇敢和富有智慧的偉大民族。;/轉(zhuǎn)換成Graphics2DGraphics2Dg2=(Graphics2D)gra;/設置打印顏色為黑色g2.setColor(Color.black);/打印起點坐標doublex=pf.getImageableX();doubley=pf.getImageableY();switch(pageIndex)case0:/設置打印字體(字體名稱、樣式和點大?。ㄗ煮w名稱可以是物理或者邏輯名稱)/Java平臺所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog和DialogInputFontfont=newFont(新宋體,Font.PLAIN,9);g2.setFont(font);/設置字體/BasicStrokebs_3=newBasicStroke(0.5f);floatdash1=2.0f;/設置打印線的屬性。/1.線寬2、3、不知道,4、空白的寬度,5、虛線的寬度,6、偏移量g2.setStroke(newBasicStroke(0.5f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,2.0f,dash1,0.0f);/g2.setStroke(bs_3);/設置線寬floatheigth=font.getSize2D();/字體高度System.out.println(x=+x);/-1-用Graphics2D直接輸出/首字符的基線(右下部)位于用戶空間中的(x,y)位置處/g2.drawLine(10,10,200,300);Imagesrc=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=+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);returnPAGE_EXISTS;default:returnNO_SUCH_PAGE;publicstaticvoidmain(Stringargs)/通俗理解就是書、文檔Bookbook=newBook();/設置成豎打PageFormatpf=newPageFormat();pf.setOrientation(PageFormat.PORTRAIT);/通過Paper設置頁面的空白邊距和可打印區(qū)域。必須與實際打印紙張大小相符。Paperp=newPaper();p.setSize(590,840);/紙張大小p.setImageableArea(10,10,590,840);/A4(595X842)設置打印區(qū)域,其實0,0應該是72,72,因為A4紙的默認X,Y邊距是72pf.setPaper(p);/把PageFormat和Printable添加到書中,組成一個頁面book.append(newPrintTest(),pf);/獲取打印服務對象PrinterJobjob=PrinterJob.getPrinterJob();/設置打印類job.setPageable(book);try/可以用printDialog顯示打印對話框,在用戶確認后打??;也可以直接打印/booleana=job.printDialog();/if(a)/job.print();/catch(PrinterExceptione)e.printStackTrace();這個例子實現(xiàn)了打印字符串,線(包括虛線)和打印圖片。而且通過Paper的setImageableArea可以設置打印的區(qū)域和邊距,讓開發(fā)者隨意的設置打印的位置。下面的打印代碼沒有設置打印區(qū)域,默認為打印紙張的區(qū)域和邊距,比如我們一般用的A4紙,打印的起點X和Y坐標則是72,72。無區(qū)域設置的代碼:importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Component;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.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.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;publicclassPrintTest1implementsPrintable/*paramGraphic指明打印的圖形環(huán)境*paramPageFormat指明打印頁格式(頁面大小以點為計量單位,1點為1英才的1/72,1英寸為25.4毫米。A4紙大致為595842點)*parampageIndex指明頁號*/publicintprint(Graphicsgra,PageFormatpf,intpageIndex)throwsPrinterExceptionSystem.out.println(pageIndex=+pageIndex);Componentc=null;/printstringStringstr=中華民族是勤勞、勇敢和富有智慧的偉大民族。;/轉(zhuǎn)換成Graphics2DGraphics2Dg2=(Graphics2D)gra;/設置打印顏色為黑色g2.setColor(Color.black);/*Paperpaper=pf.getPaper();/得到頁面格式的紙張paper.setSize(500,500);/紙張大小paper.setImageableArea(0,0,500,500);/設置打印區(qū)域的大小System.out.println(paper.getWidth();System.out.println(paper.getHeight();pf.setPaper(paper);/將該紙張作為格式*/打印起點坐標doublex=pf.getImageableX();doubley=pf.getImageableY();switch(pageIndex)case0:/設置打印字體(字體名稱、樣式和點大?。ㄗ煮w名稱可以是物理或者邏輯名稱)/Java平臺所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog和DialogInputFontfont=newFont(新宋體,Font.PLAIN,9);g2.setFont(font);/設置字體/BasicStrokebs_3=newBasicStroke(0.5f);floatdash1=4.0f;g2.setStroke(newBasicStroke(0.5f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,4.0f,dash1,0.0f);floatheigth=font.getSize2D();/字體高度System.out.println(x=+x);/使用抗鋸齒模式完成文本呈現(xiàn)/*g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);*/-1-用Graphics2D直接輸出/首字符的基線(右下部)位于用戶空間中的(x,y)位置處/g2.drawLine(10,10,200,10);Imagesrc=Toolkit.getDefaultToolkit().getImage(d:/logo.gif);g2.drawImage(src,(int)x,(int)y,c);intimg_Height=src.getHeight(c);intimg_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-直接構(gòu)造TextLayout打印/*FontRenderContextfrc=g2.getFontRenderContext();TextLayoutlayout=newTextLayout(str,font,frc);layout.draw(g2,(float)x,(float)y+2*heigth);*/-3-用LineBreakMeasurer進行打印/*AttributedStringtext=newAttributedString(str);text.addAttribute(TextAttribute.FONT,font);LineBreakMeasurerlineBreaker=ne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 30186:2025 EN Digital twin - Maturity model and guidance for a maturity assessment
- 廣東高一 上數(shù)學試卷
- 廣西第一次高考數(shù)學試卷
- 江門七年級下冊數(shù)學試卷
- 2025年中國輕質(zhì)磚行業(yè)市場運行現(xiàn)狀及投資戰(zhàn)略研究報告
- 中國復方龍膽碳酸氫鈉行業(yè)調(diào)查報告
- 中國液體硅酸鈉行業(yè)調(diào)查報告
- 農(nóng)業(yè)產(chǎn)業(yè)發(fā)展園基礎設施建設工程可行性研究報告
- 低空空域數(shù)字化管理前沿技術(shù)與實踐
- 健康活動賽龍舟課件視頻
- 建設項目使用林地可行性報告
- 新安全生產(chǎn)法2025全文
- 河北省2025年中考數(shù)學真題試卷(含答案)
- 感恩地球活動方案
- 福建福州金山中學2024~2025學年高一下冊期末考試數(shù)學試題含解析
- 2025年中國共產(chǎn)黨支部工作條例(試行)暨黨支部建設標準化工作知識競賽考試試題(綜合題庫)(含答案)
- 2025年廣東省高考生物真題(解析版)
- 2024年哈爾濱市道里區(qū)執(zhí)法輔助人員招聘考試真題
- 學堂在線 研究生的壓力應對與健康心理 期末考試答案
- 2025年7月自考13811績效管理試題及答案含解析
- 2025年江蘇省揚州樹人學校七年級英語第二學期期末綜合測試試題含答案
評論
0/150
提交評論