Java Printing Slowdown

  • Thread starter PseudoIntellectual
  • Start date
P

PseudoIntellectual

I'm trying to print a job of around 20 MB. I'm breaking to 300 jobs
with 13 around 12-13 pages per job.(It's my customer's requirement). It

prints first 150 jobs fine after that I see a dramatic slow down. I'm
posting the print function below. Please suggest how I can improve this

and increase the speed


Thanks alot
PI


Code:


public int print(Graphics g, PageFormat pf, int PageIndex) throws
PrinterException
{
if (PageIndex != rememberedPageIndex) { // this can be called multiple
times for one page
rememberedPageIndex = PageIndex;
try {
getOnePage gop = new getOnePage(FileName, currPage);
currPage++;
OnePage = gop.PageString;
if (OnePage == "") {
return Printable.NO_SUCH_PAGE;


}


if(OnePage.charAt(0)=='\u001B'­){
return Printable.NO_SUCH_PAGE;

}
}


catch ( Exception e ) {
System.out.println("Unable to get page: " + e);


}


BeginDisp = 0;

int f = 20;
int done = 0;
double iw = pf.getImageableWidth();
while (done == 0) {
g.setFont(new Font("Monospaced", Font.BOLD, f));
FontMetrics fm = g.getFontMetrics();
if (fm.stringWidth(s) < iw) {
fnt = new Font("monospaced",Font.BOLD, f);
done = 1;
break;


}


f--;
if (f < 2){ // should not happen
done = 1;

}
}


LineHeight = (int) pf.getImageableHeight();
LineHeight = LineHeight / 66;


} else {
BeginDisp = 0;
}


g.setColor(Color.black);
g.setFont(fnt);
FontMetrics fm = g.getFontMetrics();
int centerAmtX = (int) ((pf.getImageableWidth() - fm.stringWidth(s)) /
2);
int x = (int) pf.getImageableX();
int y = (int) pf.getImageableY();
int pageBreak = (int) (y + pf.getImageableHeight());
int LineCount = 0;
while ((y + LineHeight) < pageBreak) {
LineCount++;
y += LineHeight;
if (OnePage.indexOf("\r",BeginDis­p) < 0) { // last line does not have
a
cr/lf
String LastLine = OnePage.substring(BeginDisp,On­ePage.length() - 1);
//
drop last character: page break
g.drawString(LastLine, (int) x + centerAmtX, (int) y);
break;

}


String line =
OnePage.substring(BeginDisp,On­ePage.indexOf("\r",BeginDisp))­;
g.drawString(line, (int) x + centerAmtX, (int) y);
BeginDisp = OnePage.indexOf("\r",BeginDisp­) + 2;
if (BeginDisp >= OnePage.length()) {
break;

}


LineHeight = " + LineHeight + " pageBreak = " + pageBreak);

}


return Printable.PAGE_EXISTS;
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Slow down in Java printing 2
Drawing Text In Java 4
A question about some long java code that has getters/setters 34
Java Printing 0
Printing multiple pages 0
New to Java Printing 0
Collating 1
Printing (again) 8

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top