Waldo Geschrieben 7. Oktober 2003 Geschrieben 7. Oktober 2003 Ich hab nochmal ne kleine Frage: Wie kann ich die Eigenschaften des printDialoges ausgeben, also, wenn man zB auf Eigenschaften -> DIN A3 einstellt, dann soll das Blatt auch in DIN A3 Format gedruckt werden. Wird irgeneine Eigenschaft zurückgegeben, nac der abgefragt werden kann? Welche Methode gibt diese Eigenschaft zurück? Vielen Dank für die Hilfe. Waldo Zitieren
Peeter Geschrieben 7. Oktober 2003 Geschrieben 7. Oktober 2003 Ja, man kann sich vom PrinterJob das PageFormat geben lassen und dann davon die Maße. Musst mal in die Doku schauen unter "java.awt.print" Also mal die Doku bemühen. Es gibt nämlich viele Möglichkeiten. Peet Zitieren
Waldo Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 Leider werden bei den Methoden getWidth(), getHeight(), getImageableWidth(), getImageableX() usw. der Klassen PageFormat bzw. Paper immer die gleichen Werte herausgegeben, egal, wenn ich beim PrintDialog bei Eigenschaften auf A3 ändere oder nicht. Zitieren
Peeter Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Kannst du mal den Quelltext posten?! Ich schau´s mir mal an. Peet Zitieren
Waldo Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 void doPrint() { PrinterJob printJob = PrinterJob.getPrinterJob(); PageFormat pageFormat = new PageFormat(); Paper ppr = pageFormat.getPaper(); if (allTracks) pageFormat.setOrientation(PageFormat.LANDSCAPE); else pageFormat.setOrientation(PageFormat.PORTRAIT); printJob.setPrintable(this, pageFormat); if (printJob.printDialog()) { try { printJob.getPrintService(); // Hier kommen bei Änderung des PrintDialoges immer identische Werte heraus System.out.println("Höhe "+ppr.getHeight()); System.out.println("Tiefe "+ppr.getWidth()); System.out.println("ImageHeigth "+ppr.getImageableHeight()); System.out.println("ImageWidth "+ppr.getImageableWidth()); System.out.println("ImageX "+ppr.getImageableX()); System.out.println("ImageY "+ppr.getImageableY()); printJob.print(); } catch (Exception PrintException) { PrintException.printStackTrace(); } } } public int print (Graphics g, PageFormat pageFormat, int page) { if (page == 0) { buildupGraphics((Graphics2D)g, (int)pageFormat.getImageableX(), (int)pageFormat.getImageableY(), (int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight()); return (PAGE_EXISTS); } else return (NO_SUCH_PAGE); } Zitieren
Peeter Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Also so wie ich das sehe nimmst du die Maße vom Paper!*grins* Nimm mal die Maße vom PageFormat. Das Paper bleibt doch immer gleich. Nur das PageFormat ändert sich. Schau doch mal, änderst du irgendwas an deinem Paper-Object? Du änderst doch nur dein PageFormat. Davon kannst du dir ein neues Paper-Object geben lassen (welches auch die veränderten Eigenschaften enthält)! Peet ------------------------------------------------------------------ Original geschrieben von Waldo void doPrint() { PrinterJob printJob = PrinterJob.getPrinterJob(); PageFormat pageFormat = new PageFormat(); Paper ppr = pageFormat.getPaper(); if (allTracks) pageFormat.setOrientation(PageFormat.LANDSCAPE); else pageFormat.setOrientation(PageFormat.PORTRAIT); printJob.setPrintable(this, pageFormat); if (printJob.printDialog()) { try { printJob.getPrintService(); // Hier kommen bei Änderung des PrintDialoges immer identische Werte heraus System.out.println("Höhe "+ppr.getHeight()); System.out.println("Tiefe "+ppr.getWidth()); System.out.println("ImageHeigth "+ppr.getImageableHeight()); System.out.println("ImageWidth "+ppr.getImageableWidth()); System.out.println("ImageX "+ppr.getImageableX()); System.out.println("ImageY "+ppr.getImageableY()); printJob.print(); } catch (Exception PrintException) { PrintException.printStackTrace(); } } } public int print (Graphics g, PageFormat pageFormat, int page) { if (page == 0) { buildupGraphics((Graphics2D)g, (int)pageFormat.getImageableX(), (int)pageFormat.getImageableY(), (int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight()); return (PAGE_EXISTS); } else return (NO_SUCH_PAGE); } Zitieren
Waldo Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 Leider funktioniert das so auch nicht und die Werte sind immernoch identisch void doPrint() { PrinterJob printJob = PrinterJob.getPrinterJob(); PageFormat pageFormat = new PageFormat(); Paper ppr = pageFormat.getPaper(); if (allTracks) pageFormat.setOrientation(PageFormat.LANDSCAPE); else pageFormat.setOrientation(PageFormat.PORTRAIT); printJob.setPrintable(this, pageFormat); if (printJob.printDialog()) { try { printJob.getPrintService(); System.out.println("Höhe "+pageFormat.getHeight()); System.out.println("Tiefe "+pageFormat.getWidt()); System.out.println("ImageHeigth "+pageFormat.getImageableHeight()); System.out.println("ImageWidth "+pageFormat.getImageableWidth()); System.out.println("ImageX "+pageFormat.getImageableX()); System.out.println("ImageY "+pageFormat.getImageableY()); printJob.print(); } catch (Exception PrintException) { PrintException.printStackTrace(); } } } public int print (Graphics g, PageFormat pageFormat, int page) { if (page == 0) { buildupGraphics((Graphics2D)g, (int)pageFormat.getImageableX(), (int)pageFormat.getImageableY(), (int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight()); return (PAGE_EXISTS); } else return (NO_SUCH_PAGE); } Zitieren
Morbid_Soul Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Moin, kann es sein, das du das PageFormat-Objekt, welches der PrintDialog zurückgeben kann garnicht abfängst? Die immergleichen Werte erhälst du glaube ich, weil die im Dialog vorgenommenen Änderungen garnicht übernommen werden? Gruß, Peter Zitieren
Waldo Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 Wie kann ich denn das PageFormat-Objekt abfangen, so das die Änderungen im PrintDialog übernommen werden? Ich hab keine Ahnung wie das geht Zitieren
Morbid_Soul Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Oh, sorry! Jetzt habe ich Müll erzählt. Habe mich verlesen und bin igrendwie beim PageDialog gelandet, sorry. Dann muss ich auch nochmal gucken....sorry! Zitieren
Morbid_Soul Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 Vielleicht hilft dir die Funktion "validatePage" weiter. Wenn ich sie richtig verstehe, kannst du ihr ein PageFormat-Objekt übergeben und erhälst ein PageFormat-Objekt welches die im PrintDialog veränderten Parameter berücksichtigt. Zitieren
Waldo Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 Leider kommen dort auch immer die gleichen Werte heraus mit: pageFormat2 = printJob.validatePage(pageFormat); pageFormat2.getHeight(); pageFormat2.getImageableHeight(); pageFormat2.getImageableX(); Er druckt ja auch leider nicht in DIN A3. Zitieren
Morbid_Soul Geschrieben 9. Oktober 2003 Geschrieben 9. Oktober 2003 mmhhh, kannst du über den PageDialog was erreichen? Bei mir finde ich in den Dialogen nicht mal die Möglichkeit, das Format A 3 einzustellen. Zitieren
Peeter Geschrieben 9. Oktober 2003 Geschrieben 9. Oktober 2003 Original geschrieben von Morbid_Soul mmhhh, kannst du über den PageDialog was erreichen? Bei mir finde ich in den Dialogen nicht mal die Möglichkeit, das Format A 3 einzustellen. Das kommt auf den Drucker drauf an, ob der A3 unterstützt. Wenn er das nicht unterstützt kannst du A3 auch nicht auswählen. Peet Zitieren
Waldo Geschrieben 9. Oktober 2003 Autor Geschrieben 9. Oktober 2003 Über den PageDialog ist das möglich, diesen möchte ich allerdings nicht so gerne aufrufen, da die Seitenränder nicht veränderbar sein sollen. Zitieren
Morbid_Soul Geschrieben 9. Oktober 2003 Geschrieben 9. Oktober 2003 Ach, deswegen sehe ich bei mir kein A 3 Mmhhh, zwar unsauber, aber Du könntest nach Deendigung des PageDialoges den Seitenrand wieder auf "Deinen Default-Wert" setzen. Wäre das ne Möglichkeit? Zitieren
Waldo Geschrieben 10. Oktober 2003 Autor Geschrieben 10. Oktober 2003 Ich hab das jetzt anders realisiert, aber trotzdem vielen Dank für Deine ( Eure) Bemühungen. Gruß Walo Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.