1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Drucken mit java.awt.print.Book

Discussion in 'Programmieren' started by elpresident, Oct 31, 2008.

Thread Status:
Not open for further replies.
  1. Servus,

    benötige dringen Hilfe zum Drucken!
    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.

    Code-Ausschnitt:
    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();
         }
    } 
    
    Bitte deshalb dringend um Hilfe! DANKE,

    mfg
    elpresident
     
  2. Weiß keiner Rat?
    :bitte:
     
Thread Status:
Not open for further replies.

Share This Page