Hi Leutz.
Ich habe vor ner langen Zeit schon mal an diesem Problem gesessen und es damals mehr oder weniger umgangen.
Nun komm ich da nicht mehr vorbei.
Es geht darum einen Druckauftrag(in meinem Beispiel zur vereinfachung irgend ein Bild) an einen bestimmten Schacht
zu senden. Das Problem ist das ich Drucker mit ner masse Schächten habe und ich hier immer Wechseln muss.
Anbei mal ein kleines Beispiel das natürlich lauffähig ist.
Evtl. kann es mal einer bei sich ausprobieren und kommt auf eine Lösung..
Am besten wäre es wenn ich die 'Schachtnummern' verwenden könnte wie sie im Windows genommen werden.
Jede andere möglichkeit nehme ich aber auch
Bitte helft mir den ich bin letztes mal schon verzweifelt und bin jetzt auch kurz davor
Ich habe vor ner langen Zeit schon mal an diesem Problem gesessen und es damals mehr oder weniger umgangen.
Nun komm ich da nicht mehr vorbei.
Es geht darum einen Druckauftrag(in meinem Beispiel zur vereinfachung irgend ein Bild) an einen bestimmten Schacht
zu senden. Das Problem ist das ich Drucker mit ner masse Schächten habe und ich hier immer Wechseln muss.
Anbei mal ein kleines Beispiel das natürlich lauffähig ist.
Evtl. kann es mal einer bei sich ausprobieren und kommt auf eine Lösung..
Am besten wäre es wenn ich die 'Schachtnummern' verwenden könnte wie sie im Windows genommen werden.
Jede andere möglichkeit nehme ich aber auch
Java:
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.Attribute;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.MediaTray;
public class PrintTest1 {
static public void main(String args[]) throws Exception {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
/**
* Um diese Zeile geht es. -> pras.add((Attribute) MediaTray.BOTTOM);
* Ich will/kann/darf nur aus den vorgegebenen Schächten auswählen
* Aber es kann ja/wird ja mehr Schächte geben.
* Wie kann ich diese anzeigen/auswählen
* Zur auswahl stehen hier aber nur
* BOTTOM, ENVELOPE, LARGE_CAPACITY, MAUL, MANUAL, MIDDLE, SIDE UND TOP
* Ich brauche dies in dem PrintRequestAttributeSet da ich mit JasperReports arbeite
* und diese Klasse ohne Probleme verwendet werden kann.
*/
pras.add((Attribute) MediaTray.);
pras.add(new Copies(1));
PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.GIF, pras);
if (pss.length == 0){
throw new RuntimeException("Kein Drucker-Service vorhanden.");
}
int selectedService = 0;
for(int i = 0; i < pss.length; i++){
//System.out.println("verfügbare Drucker :" + pss[i].getName());
if(pss[i].getName().equals("HP LaserJet 5")){ // auswählen des Druckers 'HP LaserJet'
selectedService = i;
}
}
PrintService ps = pss[selectedService];
System.out.println("ausgewählter Drucker(Service) :" + ps); // ausgabe -> 'Win32 Printer : HP LaserJet 5'
System.out.println("ausgewählter Drucker(Drucker) :" + ps.getName()); // ausgabe -> 'HP LaserJet 5'
DocPrintJob job = ps.createPrintJob();
FileInputStream fin = new FileInputStream("C:\\Temp\\book.PNG");
Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null);
//job.print(doc, pras);
fin.close();
}
}
Bitte helft mir den ich bin letztes mal schon verzweifelt und bin jetzt auch kurz davor