Java打印程序设计全攻略 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-22
印多少页,当打印文本的按钮被点击时,执行相应的打印动作。打印文本的具体操作可通过Graphics2D的drawString方法来实现。
1) 实现Printable接口 /*Graphic指明打印的图形环境;PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英寸的1/72,1英寸为25.4毫米。A4纸大致为595×842点);page指明页号*/ public int print(Graphics g, PageFormat pf, int page) throws PrinterException { Graphics2D g2 = (Graphics2D)g; g2.setPaint(Color.black); //设置打印颜色为黑色 if (page >= PAGES) //当打印页号大于需要打印的总页数时,打印工作结束 return Printable.NO_SUCH_PAGE; g2.translate(pf.getImageableX(), pf.getImageableY());//转换坐标,确定打印边界 drawCurrentPageText(g2, pf, page); //打印当前页文本 return Printable.PAGE_EXISTS; //存在打印页时,继续打印工作 } /*打印指定页号的具体文本内容*/ private void drawCurrentPageText(Graphics2D g2, PageFormat pf, int page) { String s = getDrawText(printStr)[page]; //获取当前页的待打印文本内容 //获取默认字体及相应的尺寸 FontRenderContext context = g2.getFontRenderContext(); Font f = area.getFont(); String drawText; float ascent = 16; //给定字符点阵 int k, i = f.getSize(), lines = 0; while(s.length() > 0 && lines < 54) //每页限定在54行以内 { k = s.indexOf(''\n''); //获取每一个回车符的位置 if (k != -1) //存在回车符 { lines += 1; //计算行数 drawText = s.substring(0, k); //获取每一行文本 g2.drawString(drawText, 0, ascent); //具体打印每一行文本,同时走纸移位 if (s.substring(k + 1).length() > 0) { s = s.substring(k + 1); //截取尚未打印的文本 ascent += i; } } else //不存在回车符 { lines += 1; //计算行数 drawText = s; //获取每一行文本 g2.drawString(drawText, 0, ascent); //具体打印每一行文本,同时走纸移位 s = ""; //文本已结束 } } } /*将打印目标文本按页存放为字符串数组*/ public String[] getDrawText(String s) { String[] drawText = new String[PAGES]; //根据页数初始化数组 for (int i = 0; i < PAGES; i++) drawText[i] = ""; //数组元素初始化为空字符串 int k, suffix = 0, lines = 0; while (s.length() > 0) { if (lines < 54) //不够一页时 { k = s.indexOf(''\n''); if (k != -1) //存在回车符 { lines += 1; //行数累加 //计算该页的具体文本内容,存放到相应下标的数组元素 drawText[suffix] = drawText[suffix] + s.substring(0, k + 1); if (s.substring(k + 1).length() > 0) s = s.substring(k + 1); } else { lines += 1; //行数累加 //将文本内容存放到相应的数组元素 drawText[suffix] = drawText[suffix] + s; s = ""; } } else //已满一页时 { lines = 0; //行数统计清零 suffix++; //数组下标加1 } } return drawText; } Java打印程序设计全攻略(3)时间:2010-12-232) 计算需要打印的总页数 public int getPagesCount(String curStr) { int page = 0; int position, count = 0; String str = curStr; while(str.length() > |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Java打印程序设计全攻略 - 编程入门网的所有评论