Hallo,
ich habe ein Problem mit der automatischen Druckerauswahl in Java. Sprich, die Druckerauswahl geschieht im Programm, der Druckerdialog soll nicht erscheinen. Wenn ich die Abfrage nach printDialog() weglasse, wird automatisch der Standard-Drucker des Systems ausgewählt.
Ich habe im Programm Einstellungen, bei denen die verschiedenen Drucker festgelegt werden können. Dazu werden die Drucker ausgelesen und die Werte in eine comboBox übernommen. Entsprechend der Auswahl werden die Werte danach in eine Datenbank geschrieben.
Der Name des Fax-Druckers ist im String FaxDrucker gespeichert.
Die Variable Drucker ist PrintService Drucker. Die liefert auch den ausgewählten Drucker.
Ich suche nun nach einer Möglichkeit im PrintRequestAttributeSet den Drucker fest zu legen. Leider habe ich bisher keine (funktionierende) Möglichkeit gefunden (Vielleicht einfach nur die falschen Schlüsselwörte in Google eingetragen). Da ich aber Möglichkeiten gefunden habe den Schacht des Druckers fest zu legen, vermute ich dass es auch gehen sollte nur den Drucker auszuwählen. Anbei einige Codefragmente.
{try { flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
attrs.add(new PrinterName(Drucker.getName(), null)); //Zeile 134 ist hier, der Druckername wird nicht erkannt
// attrs.add(new PrinterName(FaxDrucker, null)); //funktioniert auch nicht
// attrs.add(new PrinterName("kein Drucker", null)); //kann nicht funktionieren, liefert aber das gleiche Ergebnis!
attrs.add(OrientationRequested.PORTRAIT);
attrs.add(MediaSizeName.ISO_A4);
attrs.add(new Copies(1));
attrs.add(MediaSize.findMedia(8, 4, MediaSize.INCH));
attrs.add(new PrinterResolution(300, 300, PrinterResolution.DPI));
attrs.add(new JobName("Briefansicht", null));
if(BKDrucki == 1){BriefkopfEinfuegen();}
if(BFDrucki == 1){BrieffussEinfuegen();}
if(BKDrucki == 1){UnterschriftEinfuegen();}
job = PrinterJob.getPrinterJob();
pf = job.defaultPage();
temp = pf.getPaper();
temp.setImageableArea(0, 0, temp.getWidth(), temp.getHeight());
pf.setPaper(temp);
job.setPrintable((Printable) this, pf);
public void DruckerAusgeben() {
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
{ int AnzahlDrucker = services.length;
int i = 0;
while (i< AnzahlDrucker) {
PrintService ps = services**;
if (ps.getName().contains(FaxDrucker)) {Drucker = ps;}
i++;
}
}
}
Folgende Fehlermeldung erscheint:
at javax.print.attribute.AttributeSetUtilities.verifyAttributeValue(AttributeSetUtilities.java:552)
at javax.print.attribute.HashAttributeSet.add(HashAttributeSet.java:304)
at Drucken.BriefFaxen.dateiDrucken(BriefFaxen.java:134)
…
Ich würde mich sehr über Hilfe freuen.
Vielen Dank
Frank