Java打印程序设计.docx

上传人:王** 文档编号:1394217 上传时间:2024-07-05 格式:DOCX 页数:10 大小:24.99KB
下载 相关 举报
Java打印程序设计.docx_第1页
第1页 / 共10页
Java打印程序设计.docx_第2页
第2页 / 共10页
Java打印程序设计.docx_第3页
第3页 / 共10页
Java打印程序设计.docx_第4页
第4页 / 共10页
Java打印程序设计.docx_第5页
第5页 / 共10页
Java打印程序设计.docx_第6页
第6页 / 共10页
Java打印程序设计.docx_第7页
第7页 / 共10页
Java打印程序设计.docx_第8页
第8页 / 共10页
Java打印程序设计.docx_第9页
第9页 / 共10页
Java打印程序设计.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
资源描述

《Java打印程序设计.docx》由会员分享,可在线阅读,更多相关《Java打印程序设计.docx(10页珍藏版)》请在优知文库上搜索。

1、Java打印程序设计1 MeF在我的的实际I:作中,常常须要实现打印功健.但由于历史缘由,JaVa供应的打印功能始终都比拟弱.事实上般初的Jdk根本不支持打印,宜到MkI.1才引入了很轻欧的打印支持.所以.在以前用Java/AppleVJSP/SerVtet设计的程序中,较困难的打印都是通过调用ACUVeXQCX控件或者VBNC程序来实现的,特别麻烦,事实上,SUN公司也始终致力于JaVa打卬功能的完善,而Java2平台那么用绻行r一个强他的打印模式的开端,该打印模式以Java2D图形包充分结合成体,更令人蚁招的是,新发布的jdk1.4那么供应了套完整的“Java打印效劳APr(JaVaPri

2、ntSerViCeAPI),它对已有的打印功能是主动的补充.利用它,我们可以实现大局部实际应用再求,包括打印文字、图形、文件及打印预览等等。本文将通过一个详细的程序实例率说明如何设计JaVa打印程序以实现这些功能.并对不同版本的实现方法进展分析比拟.吊电大家能从中获得一些有益的提示.2 Java中的打印2.1 Java的打印APlJava的打印API主要存在包中.而jdk1.4新增的类那么主要在在于javax.print包及其相应的子包和中.共中Javaxpnnt包中主要包含打FlJ效劳的相关类,而那么包含打印事务的相关定义.那么包括打印效劳的可用解性列表等.22如何实现打印要产生个打印,至少

3、很要考虑两条:殖吃个打印效劳对象.这可通过三种方式实现I在Wkl.4之前的版本,必须要坡现接1.l或潮过TOOh1.getDefaUltToOlkiH).gelPnnUob来茨将打印效劳对象:在jdk1.4中那么可以通过来ft找定位个打印效劳时型.须要开场一个打卬工作.这也有儿种实现方法:在jdk1.4之前可以通过java.awt.print.PrintJob(jdk1.1供应的,现在1.l经很少用Tj调用Print或PrintAll方法开场打印工作:也可以通过的PrintDiaIOg显示打印对话框.然后通过Pdnl方法开场打印:在jdk1.4中那么可以通过的PnntDiaIog显示打印对话框

4、,然后谡用Pnnt疗法开场个打印工作.2.3打印机对话柢Printable的打印对话框开场打印工作之前,可以通过PrinterJobprintDiaIog来显示一个打印对话框,它给用户一个时机以选择应当打印的页码范用,弁可供用户变更打印设置.它是一个本地对话框.于实上,当从一个PrintabIe对象进展一个打印工作时,打卬对象并不知道须要打印多少页.它只是不停地商用print方法,只要Prin方法返回Printable.PAGE-EISTS值.打印工作就不停地产生打印页,直到Pnnl方法返回PnntabIe.NO_SUCH_PAGE时.打印I:作才停侬.由于打印工作只有在打印完成后才进屣精确的

5、页数计鸵,所以在对话框上的页码范国是尚未初始化的1,9999我仃可以通过构建个对望传递给打印对敞:也可以通过指定的格式让仇须要打印的页数并传递给打印对象使其精确地知道要打印多少页.2 3.2ServiceUI的打印对话框与Printable的对话极不同的是,.jdk1.4供应ServiceUI的打印机对话板的然省行为已经用新的API更改了:籍有状况下对话框不显示,我归必需运用ServiceUI类调用PrintDiaJog方法创立如卜,所示的打印对话框.3 JaVa打印程序设计实例3.1 打卬文本3.1.1 应用场景假设我们须要打印个窗体的某个文本编辑域(可能只有几行,也可能包含多页)的内容,并

6、且俗页公多打卬54行,如何实现嗯?312诉决方法根木思路如下:首先我们须要实现PrintabIe接口,然后依据彩页G多54行的格式计。共须要打印多少页,当打印文本的按钿被点击时,执行相应的打FlJ动作.打印文本的详细操作可通过Graphics2D的drawString方法来实现.1.实HePrintabIe接1.JrGraphic指明打印的图形环境:PageFormat指明打印页格熄页面大小以点为计量单位,1点为1英寸的1/72,1英寸为25.4亳米,A4尔大致为595842点):page指明页号Vpublicintprint(Grapicsg,PageFormatpf.intpage)thr

7、owsPrinterExceptionGrapics2Dg2=(Graphics2D)g;g2.setPaint(Colorblack);设置打印色为黑色if(page=PAGES)当打印页号大于须瞿打印的总页数时,打印工作完毕returnPrintable.NO_SUCH_PAGE;g2.tra11slate(pf.getlmageableX(),PtgetlmageabIeY();转换坐标.瑜定打印边界drawCuentPageTet(g2.pf.Page打印当前页文本returnPrintable.PAGE_EXISTS;存在打卬页时,接着打印工作)广打印指定页号的详细文本内容/priv

8、atevoiddrawCurrentPageTet(Graphics2Dg2.PageFormatpf,intpage)Strings=getDrawText(prinlSlr)pagM:狭得苜前页的待打印文本内容狭得默认字体及相应的尺寸FontRenderContextntext=g2.getFontRenderConteXt();Fontf=area,getFont();StringdrawText;floatascent=16:给定字符点阵intk,i=f.getSize()1lines=0;while(s.ength()0&linesg(O.k):狭尔班行文本g2.drawString

9、(drawTet.O.ascent);详细打印板一行文木.同时走纸移位if(SSUbString(k+1),length()0)s=s.substring(k1);敌取尚未打印的文本ascent+=i;else不存在回车符(lines+=1;计犯行数drawTet=s;获得征行文本g2.drawStrig(drawTextO.agent);详细打印每一行文本.同时走纸移位s=-;文本己完毕)广将打卬目标文木按页存放为字符率publicStringgetDrawTet(Strings)(Stnng(drawText=newStringPAGES;依抠页数初始化数组for(inti=0;i0)(i

10、f(linesO)s=s.substring(k+1);)else(lines+=1;/行数我加“格文本内容存放到相应的数加元素drawTet(suffi=drawTextsuffixs;s=:)else己淌-JiiBj(lines=0;行数统计清零SUffiX+;故抓下标加1)returndrawText;2,计算须要打印的总页数publicintgetPagesCont(StringcurStr)(intpage=0;intposition,count=0;Stringstr=curStr;w网StrIengthO0)“文本尚未计算完毕(position=str.indexf(n);计同乍

11、符的位置count=1;统计行数if(positionI=-1)str=slr.substring(postion+1);截取尚未计算的文本elsestr=”;文木己计尊完毕)if(ut0)page=count/54+1;以总行数除以54获得总页数returnpage;返同管打印的总页数3.1、 以jdk1.4以前的版本实现打印动作按钿监听.并完成详细的打印操作privatevoidprintTextAction()PrintStr=area.ge11xt().lnm():获得双要fjFIJ的11标文本if(printStr=null&pnntStr.lenglh()O)当打FlJ内容不为空时

12、(PAGES=getPagesCont(printStrj;获得打卬总页数PnnterJobmyPrUob=P11nterJob.gtPnntrJob();我得默认打印作业PageFormatPageFOrmal=myPrtJob.defaultPage();茨得以认打印页面格式myPrtJobsetPrintable(this,pageFormat);设翼打El)工作if(myPrUob.printDDtog()显示打印对话框(trymyPrtJob.print();进展捋页的详细打印操作)CatCh(PrinterEXCePtiOnpe)p.pnntStackTrac();)else假如打

13、印内容为空时,提示用户打印将取消JOptionPane.showConfirmDialog(null,Sorry,PrinterJobisEmpty,PrintCancelled!,Empt/.JoPtiOnPaneQEFAU1.T_OPTION,JOPtionPane.WARNING.MESSAGE);)3.2、 以JdkI.4新版本供应的APl实现打印动作按钮监听.并完成详细的打FlJ悚作privatevoidprintText2Action()PrintFIag=0:打印标记清零PrintStr=area.ge11xl().trim()力获得次要打印的目标文本if(printStr!=n

14、ull&pri11tStr.le11gth()0)当打印内容不为空时(PAGES=getPagesCont(printStr):获得打卬总页数指定打印输出格式DocFIavorflavor=DocFlavorSERVICE-FORMATTED-PRlNTAB1.E;“定位默认的打卬效劳PrintServiceprintservice=PrintSerViCe1.OokUPjoOkUPDefaUitPrintSerViCe();创立打印作业DocPrintJobjob=prin(Service.createPrinUob);设跟打卬磁性PrintReqUestAttributeSetpras=newHashRrintRequestAttributeSetO;DocAttributeS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > Java

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!