Hallo,
der folgende Code macht mir sorgen.
Zwar kommt der Druckauftrag im Durckmanager unter XP an aber es wird nichts gedruckt. Hat jemand einen Ippp an was es liegen könnte?
der folgende Code macht mir sorgen.
Code:
import java.text.NumberFormat;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
public class Printer {
private PrintService[] printers;
private int choosenPrinter;
private StringBuffer text;
/**
* Der Konstruktor legt einen Array der verfügbaren Drucker an.
* @param stdPrinter Der aktuell ausgewählte Drucker(-index)
*/
public Printer(int stdPrinter) {
printers = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.AUTOSENSE, null);
if (printers.length > 0){
choosenPrinter = 0;
setChoosenPrinter(stdPrinter);
} else choosenPrinter = -1;
}
/**
* Liefert einen Array mit Namen der verfügbaren Drucker.
* @return Namen der verfügbaren Drucker
*/
public String[] getPrinters() {
String[] retPrinters = new String[printers.length];
for (int i = 0; i < printers.length; i++) {
retPrinters[i] = printers[i].getName();
}
return retPrinters;
}
/**
* @return Liefert den Index des aktuell ausgewählten Druckera
*/
public int getChoosenPrinter() {
return choosenPrinter;
}
/**
* Setzt den Index des aktuell ausgewählten Druckers neu,
* wenn der Index gültig ist.
* @param choosenPrinter Der neu ausgewählte Index
*/
public void setChoosenPrinter(int choosenPrinter) {
if (choosenPrinter <= printers.length) {
this.choosenPrinter = choosenPrinter;
}
}
/**
* Druckt eine oder mehere Quittungen über die übergebenen Daten
* @param buchung Buchung die in der Quittung enthalten sein soll.
* @param haendler Händler der in die Quittung aufgenommen werden soll.
* @param kunde Kunde der in die Quittung aufgenommen werden soll.
* @param config Das aktuelle Configobjekt.
* @param times Anzahl der Quittungen die gedruckt werden sollen.
* @return true wenn der Druck erfolgreich angestoßen wurde, false sonst
*/
public boolean printBuchung() {
if (choosenPrinter == -1) return false;
PrintService printer = printers[choosenPrinter];
String ls = System.getProperty("line.separator");
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
text = new StringBuffer();
if ('T' == 'T') {
text.append("Q U I T T U N G");
text.append(ls);
}
String temp = text.toString();
temp = temp.replace("ä", "ae");
temp = temp.replace("ö", "oe");
temp = temp.replace("ü", "ue");
temp = temp.replace("ß", "ss");
for (int i=0; i<1000; i++) {
DocPrintJob docPJ = printer.createPrintJob();
Doc doc;
doc = new SimpleDoc(temp.getBytes(), DocFlavor.BYTE_ARRAY.AUTOSENSE, null);
try
{
docPJ.print(doc, null);
}
catch (PrintException e)
{
return false;
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return true;
}
}