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 //不存在回车符
{