Probleme mit java.awt.print.Book

elpresident

Grünschnabel
Servus,

benötige dringen Hilfe zum Drucken! :confused:
Hab schon alles versucht und bin schon zwei ganze tage an diesem problem und finde keine Lösung:

Habe ein Book-Objekt, dem ich mehrere "Kapitel" (JEditorPane implements Printable) "appende". Im JEditorPane habe ich einen html-Text und lass diesen über print(Graphic2D) in der Printable.print(...) drucken.
Leider wird immer nur das erste Kapitel korrekt gedruckt und für die restlichen Kapitel nur leere Seiten! Allerdings stimmt die Seitenanzahl der Kapitel und wenn ich die Reihenfolge der Kapitel ändere, wird wiederum das zu erst hinzugefügte Kapitel gedruckt!

An was kann das liegen? Befürchte, dass das Ganze an dem Book-Objekt liegt, aber finde dafür keine Lösung. Das Book-Objekt wird einfach über Book printBook = new Book() erzeugt und die einzelnen Kapitel mit einem PageFormat und der Seitenanzahl hinzugefügt.

Bitte deshalb dringend um Hilfe! DANKE,

mfg
elpresident
 
Code zum Problem mit java.awt.print.Book

Hab hier noch n paar Code-Ausschnitte zu meinem Problem:

Code:
public static doPrint() {
     PrinterJob pJob = PrinterJob.getPrinterJob();
     if (pJob.printDialog() == true) {
          try {
               Book printBook = new Book();

               PrintPane printPane1 = new PrintPane();
               printPane1.setContentType("text/html");
               printPane1.setText("...HTML-Code 1...");
               printBook.append(printPane1, pJob.defaultPage(), printPane1.getPageCount(pJob.defaultPage()));

               PrintPane printPane2 = new PrintPane();
               printPane2.setContentType("text/html");
               printPane2.setText("...HTML-Code 2...");
               printBook.append(printPane2, pJob.defaultPage(), printPane1.getPageCount(pJob.defaultPage()));

               pJob.setPageable(printBook);
               pJob.print();
          } catch (Exception e) {
               pJob.cancel();
               e.printStackTrace();
          }
     }
}

public class PrintPane extends JEditorPane implements Printable {
     public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
          this.setSize(this.getPreferredSize());
          Graphics2D g2d = (Graphics2D) graphics;
          if (pageIndex > this.getPageCount(pageFormat)) {
               return Printable.NO_SUCH_PAGE;
          }
          g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY() + pageFormat.getImageableHeight() * (-pageIndex));
          g2d.scale(pageFormat.getImageableWidth() / this.getWidth(), pageFormat.getImageableWidth() / this.getWidth));
          this.print(g2d);
          return Printable.PAGE_EXISTS;
     }
     public int getPageCount(PageFormat pageFormat) {
          return new Double(Math.ceil(this.getPreferredSize().getHeight() / pageFormat.getImageableHeight())).intValue();
     }
}
 
Zurück