cp 为printable类,其写法可参考
http://www-900.ibm.com/developerWorks/cn/java/l-javaprint/index.shtml
(我将里面的pagescount部分移出到本类)public void startPrint() throws PrinterException{
int PAGES = 0;
if (printStr != null && printStr.length() > 0) //当打印内容不为空时
{
PAGES = getPagesCount(printStr); //获取打印总页数
cp.setPAGES(PAGES);
PrinterJob myPrtJob = PrinterJob.getPrinterJob(); //获取默认打印作业
PageFormat pageFormat = myPrtJob.defaultPage(); //获取默认打印页面格式
.......
myPrtJob.setPrintable(cp,pageFormat); //设置打印工作
cp.setPrintStr(printStr); if (myPrtJob.printDialog()) //显示打印对话框,如果删掉就不会弹出对话框
{
try{
myPrtJob.print(); //进行每一页的具体打印操作
}catch(PrinterException pe) {
throw new PrinterException("PrinterException: "+ pe.toString ());
}
System.exit(0);
}
}
else {
System.out.println("无打印内容!");
}
}
http://www-900.ibm.com/developerWorks/cn/java/l-javaprint/index.shtml
(我将里面的pagescount部分移出到本类)public void startPrint() throws PrinterException{
int PAGES = 0;
if (printStr != null && printStr.length() > 0) //当打印内容不为空时
{
PAGES = getPagesCount(printStr); //获取打印总页数
cp.setPAGES(PAGES);
PrinterJob myPrtJob = PrinterJob.getPrinterJob(); //获取默认打印作业
PageFormat pageFormat = myPrtJob.defaultPage(); //获取默认打印页面格式
.......
myPrtJob.setPrintable(cp,pageFormat); //设置打印工作
cp.setPrintStr(printStr); if (myPrtJob.printDialog()) //显示打印对话框,如果删掉就不会弹出对话框
{
try{
myPrtJob.print(); //进行每一页的具体打印操作
}catch(PrinterException pe) {
throw new PrinterException("PrinterException: "+ pe.toString ());
}
System.exit(0);
}
}
else {
System.out.println("无打印内容!");
}
}
给你printable类(根据那篇文章修改)import java.awt.*;
import java.awt.font.*;
import java.awt.print.*;
import java.awt.print.Printable;public class CPrintable implements Printable{
private int PAGES = 0;
private int PAGEROW = 0;
private String printStr;
private Font font;//字体
private float ASCENT; //给定字符点阵
private int ROWHEIGHT; public void setPAGEROW(int n){
this.PAGEROW = n;
} public void setFont(Font f){
this.font = f;
} public void setPAGES(int n){
this.PAGES = n;
} public void setPrintStr(String str){
this.printStr = str;
} public void setAscent(float h){
this.ASCENT = h;
} public void setRowHeight(int h){
this.ROWHEIGHT = h;
} 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];
String drawText;
float ascent=ASCENT;
int k, i = ROWHEIGHT, lines = 0; //i 为行距 while(s.length() > 0 && lines < PAGEROW)
{
k = s.indexOf('\n');
if (k != -1)
{
lines += 1;
drawText = s.substring(0, k);
g2.setFont(font);
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 < PAGEROW)
{
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++;
}
}
return drawText;
}}