Hallo,
ich habe mir nach dem Lesen der Forumsbeiträge zum Drucken das Beispiel vom Javabuch hergenommen und danach meine Klasse aufgebaut. Da ich keinen Drucker habe läuft das bei mir über den PDF-Druckertreiber.
Die PDF wird erstellt, aber die Seite ist leer.
Zum Testen habe ich den Druck erstmal auf eine Seite begrenzt und nur eine Überschrift und dieses Rechteck eingebunden. Aber wie schon gesagt die Seite ist leer. Hier noch der Code wie ich den Druck starte:
Es wird der Dialog zur Seiteneinrichtung angezeigt - dann der Dialog mit der Druckerauswahl - dann der Dialog des PDF-Treibers für den Speicherort. Beim Debuggen werden die Befehle innerhalb von der print-Methode auch aufgerufen, aber die Seite bleibt leer.
Was mache ich noch falsch?
Danke schon mal für die Hilfe!
greetz, Ralf...
ich habe mir nach dem Lesen der Forumsbeiträge zum Drucken das Beispiel vom Javabuch hergenommen und danach meine Klasse aufgebaut. Da ich keinen Drucker habe läuft das bei mir über den PDF-Druckertreiber.
Die PDF wird erstellt, aber die Seite ist leer.
Code:
public class printObj implements Printable
{
DbResult dbRes;
PrinterJob printJob;
PageFormat pageFormat;
int comp2Print = -1;
String compName="";
String compDate="";
String sqlQuery="";
String headLine="";
java.util.ArrayList siteList = new java.util.ArrayList();
public printObj(String dbConStr,String dbConUser,String dbConPass,int compId) throws SQLException
{
dbRes = new DbResult(dbConStr,dbConUser,dbConPass);
comp2Print = compId;
dbRes.setQuery("SELECT ...");
compName = dbRes.getString(1);
compDate = dbRes.getString(2);
this.printJob = PrinterJob.getPrinterJob();
this.pageFormat = printJob.defaultPage();
printJob.setPrintable(this,pageFormat);
}
public boolean showPageDlg()
{
PageFormat newFormat = printJob.pageDialog(pageFormat);
printJob.setPrintable(this,newFormat);
return (newFormat != pageFormat);
}
public boolean showPrintDlg()
{
return printJob.printDialog();
}
public void printIt() throws PrinterException
{
printJob.setJobName("LabelPrinterTest");
printJob.setCopies(1);
showPageDlg();
if(printJob.printDialog()) printJob.print();
else System.out.println("Drucken abgebrochen");
}
public int print(Graphics g,PageFormat pf,int page)
{
int resMulti = 4;
int res = PAGE_EXISTS;
if(siteList.contains(page)) res = NO_SUCH_PAGE;
else siteList.add(page);
if(page>0) res = NO_SUCH_PAGE;
if(res == PAGE_EXISTS)
{
Graphics2D g2 = (Graphics2D)g;
g2.scale(1.0/resMulti, 1.0/resMulti);
int currentFontPosY = (int)pf.getImageableY()*resMulti;
int currentFontPosX = (int)pf.getImageableX()*resMulti;
int rowHeight = 14*resMulti;
int pageHeight = currentFontPosY + (int)pf.getImageableHeight()-rowHeight;
g2.setColor(Color.BLACK);
g2.setFont(new Font("Arial",Font.BOLD,14*resMulti));
g2.drawString(headLine, (int)(pf.getImageableWidth()/2)-(headLine.length()*14*resMulti), currentFontPosY);
currentFontPosY += rowHeight;
g2.drawLine(currentFontPosX+20,currentFontPosY,(int)pf.getImageableWidth()*resMulti-20,currentFontPosY);
g2.drawRect(50,50,250,500);
}
return res;
}
}
Zum Testen habe ich den Druck erstmal auf eine Seite begrenzt und nur eine Überschrift und dieses Rechteck eingebunden. Aber wie schon gesagt die Seite ist leer. Hier noch der Code wie ich den Druck starte:
Code:
try
{
printObject.printIt();
}catch(Exception exc)
{
showErrorMsg("Fehler beim Drucken!",exc.getMessage());
}
}
Es wird der Dialog zur Seiteneinrichtung angezeigt - dann der Dialog mit der Druckerauswahl - dann der Dialog des PDF-Treibers für den Speicherort. Beim Debuggen werden die Befehle innerhalb von der print-Methode auch aufgerufen, aber die Seite bleibt leer.
Was mache ich noch falsch?
Danke schon mal für die Hilfe!
greetz, Ralf...