当前位置: 技术问答>java相关
如何在一页纸上分次打印?
来源: 互联网 发布时间:2015-09-23
本文导语: 我用printable实现了打印的功能,但每调一次print方法打印机就会换一次纸。现在的问题是我需要一次只打印一行数据,一页纸打满以后再换纸,请问如何实现?请各位高手务必帮忙,分数不成问题,我有4000多份可用。...
我用printable实现了打印的功能,但每调一次print方法打印机就会换一次纸。现在的问题是我需要一次只打印一行数据,一页纸打满以后再换纸,请问如何实现?请各位高手务必帮忙,分数不成问题,我有4000多份可用。
|
如果你是要在连本地PC的打印机上输出的话,可以不使用printable ,直接对PC的并口输出,就能达到你要的效果。
如果不是,你可以在方法:
print(Graphics g, PageFormat format, int pageIndex) 中对pageIndex 参数和方法的返回值 return Printable.PAGE_EXISTS 做修改。 改变方法的返回值可能会使得在下次print被调用时,影响pageIndex 的值。我没试过,你试试吧。
如果不是,你可以在方法:
print(Graphics g, PageFormat format, int pageIndex) 中对pageIndex 参数和方法的返回值 return Printable.PAGE_EXISTS 做修改。 改变方法的返回值可能会使得在下次print被调用时,影响pageIndex 的值。我没试过,你试试吧。
|
在Java内,实现打印要用到两个类:PrinteJob 和 实现Printable 接口的类。
打印的关键在于Printable接口的Print方法的实现。你可以把你要打印的文本
全部画到图形环境上,再打印。
看看下面的代码,但愿能给你一些帮助:
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException
{ if (page >= 1) return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(Color.black);
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.draw(new Rectangle2D.Double(0, 0,
pf.getImageableWidth(), pf.getImageableHeight()));
drawPage(g2);
return Printable.PAGE_EXISTS;
}
public void drawPage(Graphics2D g2)
{ FontRenderContext context = g2.getFontRenderContext();
Font f = new Font("Serif", Font.PLAIN, 72);
GeneralPath clipShape = new GeneralPath();
TextLayout layout = new TextLayout("Hello", f, context);
AffineTransform transform
= AffineTransform.getTranslateInstance(0, 72);
Shape outline = layout.getOutline(transform);
clipShape.append(outline, false);
layout = new TextLayout("World", f, context);
transform
= AffineTransform.getTranslateInstance(0, 144);
outline = layout.getOutline(transform);
clipShape.append(outline, false);
g2.draw(clipShape);
g2.clip(clipShape);
final int NLINES =50;
Point2D p = new Point2D.Double(0, 0);
for (int i = 0; i
打印的关键在于Printable接口的Print方法的实现。你可以把你要打印的文本
全部画到图形环境上,再打印。
看看下面的代码,但愿能给你一些帮助:
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException
{ if (page >= 1) return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(Color.black);
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.draw(new Rectangle2D.Double(0, 0,
pf.getImageableWidth(), pf.getImageableHeight()));
drawPage(g2);
return Printable.PAGE_EXISTS;
}
public void drawPage(Graphics2D g2)
{ FontRenderContext context = g2.getFontRenderContext();
Font f = new Font("Serif", Font.PLAIN, 72);
GeneralPath clipShape = new GeneralPath();
TextLayout layout = new TextLayout("Hello", f, context);
AffineTransform transform
= AffineTransform.getTranslateInstance(0, 72);
Shape outline = layout.getOutline(transform);
clipShape.append(outline, false);
layout = new TextLayout("World", f, context);
transform
= AffineTransform.getTranslateInstance(0, 144);
outline = layout.getOutline(transform);
clipShape.append(outline, false);
g2.draw(clipShape);
g2.clip(clipShape);
final int NLINES =50;
Point2D p = new Point2D.Double(0, 0);
for (int i = 0; i
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!