Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Die Methode print() wird 2 mal für jede Seite aufgerufen
Hallo, vielleicht kann mir jemand hier weiterhelfen.
Ich habe folgendes Problem:
ich will 2 Seiten drucken (keine Kopien).
Ich verstehe nicht, warum die Methode print() von meinem Printable
für jede Seite 2 mal aufgerufen wird und wie ich es umgehen kann.
Mit System.out.println(pageIndex); frage ich die aktuelle Seitenzahl ab
und die Ausgabe sieht so aus:
0
0
1
1
:shock:
Code:
package test;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class PrintTest implements Printable {
private PrinterJob printerJob;
private PageFormat pageFormat;
private final int pages;
public PrintTest() {
printerJob = PrinterJob.getPrinterJob();
pageFormat = printerJob.defaultPage();
pages = 2;
}
/**
* @param args
*/
public static void main(String[] args) {
PrintTest printTest = new PrintTest();
printTest.print();
}
public void print() {
printerJob.setJobName("LabelPrinterTest");
printerJob.setCopies(1);
printerJob.setPrintable(this, pageFormat);
if (printerJob.printDialog()) {
try {
printerJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if (pageIndex >= pages) {
return NO_SUCH_PAGE;
}
else {
System.out.println(pageIndex);
graphics.setColor(Color.RED);
graphics.fillRect(20, 20, 100, 100);
}
return PAGE_EXISTS;
}
}
Danke, jetzt weiss ich wenigstens das es kein Fehler ist oder Ähnliches.
Ich habe noch eine Frage dazu, denn irgendwie muss ich ja mein Problem lösen.
Werden also immer 2 mal mehr Seiten gedruckt und 2 mal mehr Resourcen verbraucht oder
ist es völlig normal so und es werden trotzdem 2 Seiten wie geplannt rauskommen?
Bis jetzt hab ich es mit FreePDF getestet und es kamen tatsächlich 2 Seiten raus wie gewollt,
aber kann man sich darauf verlassen?
selbst wenn der Printer jede Seite nur einmal lesen würde könnte er sie statt einmal auch keinmal oder 20mal drucken,
von dieser Art des Zugriffs kannst du also gar nix ablesen
---------
generell ist also die Frage schlicht: 'funktioniert Java-Printer (normal)?'
ich selber kann dazu nix sagen, noch nicht benutzt,
denke aber nicht, dass da ein derart auffällige Fehlfunktion in der API vorhanden ist
> Anmerkung: callback steht für Rückruf, mit Wiederholung hat das an sich nix zu tun
Für einen bestimmten pageIndex muss die Methode "wiederholt" genau das Gleiche machen,
und zwar egal wie oft sie mit diesem pageIndex "besucht" wird, daher meine etwas freie Übersetzung :wink:
> es kamen tatsächlich 2 Seiten raus wie gewollt, aber kann man sich darauf verlassen?
Pro pageIndex kommt garantiert nur eine Seite raus :wink:
Da ich immer noch am Kämpfen mit meinem Programm bin, schließe ich dieses Thema nicht. Vielleicht hatte jemand das gleiche Problem und kann noch was dazu sagen. Alle bisherigen Antworten konnten mir aber auch weiterhelfen, ich danke euch dafür.
//Edit: ok hab den vorigen Post nicht gelsen, es hat sich erledigt, danke
//Edit: noch eine blöde Frage, wie kann ich dieses Thema schließen? Finde keinen Button oder so.