lookupPrintServices braucht eeeeeeeeeeeewig

Status
Nicht offen für weitere Antworten.

boesi

Aktives Mitglied
moin

Ich hole mir mit "PrintServiceLookup.lookupPrintServices" eine Liste aller angeschlossenen Drucker

Solang ich folgenden Code verwende, geschieht das auch in ca 10ms:
Code:
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
this.printers = PrintServiceLookup.lookupPrintServices(flavor, attributes);
Sobald ich aber auch nur ein einziges Attribut (zb: attributes.add(MediaSizeName.ISO_A4); ) setzte, dauert das je nach Rechner zwischen wenigen Sekunden und über 5 Minuten (ja ich hab reproduzierbar 320s gemessen).

Hat jemand dafür eine Erklärung?


Noch ne andere Frage so nebenbei: Gibt's einen Weg in Java zu bestimmen, welche Drucker angeschlossen und/oder online sind? Wenn ich das hier von Microsoft richtig interpretier, geht das (zumindest unter Windows) nur wenn man einen Auftrag an den Drucker schickt - aber irgendwie kanns das doch nicht sein - ich will doch VOR dem Drucken wissen ob das Gerät verfügbar ist.

Unter Vista ist aber in der Systemsteuerung zumindest bei lokalen Druckern das Symbol ausgegraut, wenn sie nicht angeschlossen sind. Also muß es ja doch irgendwie gehen ...

Hier im Forum schreibt jemand das könne mit einem externem Programm gehen - tja nur wie könnte das aussehen? Und der Poster erwähnt auch noch JavaPOS - aber dafür benötige ich doch die Unterstützung des Geräteherstellers, oder? Wenn ich also beliebige Drucker unterstützen will, bringt mir das nicht viel oder doch?


Vielen Dank schon mal
cu boesi
 

boesi

Aktives Mitglied
Bert Brenner hat gesagt.:
Evtl. gibts da nicht erreichbare Netzwerkdrucker oder ähnliches auf das der Rechner da warten muss.
Das war auch mein erster Gedanke, aber so einfach isses leider nicht.

Auf meinem Entwicklungsrechner (Vista) sind tatsächlich mehrere Netzwerkdrucker installiert, die nicht immer angeschlossen sind. Hier hatte die Funktion von Anfang an rund 30 Sekunden gebraucht. Das hatte ich aber erstmal unter "ärgerlich, aber 's gibt wichtigeres" einsortiert. Beim Kunden dann wollte ich dann ansetzen und lang und breit erzählen warum das jetzt länger dauert aber da war er auch schon fertig. Da sind aber auch keine Netzwerkdrucker installiert.

Vorletzte Woche hat sich aber ein Kunde beschwert, dass das Öffnen des Druckdialogs plötzlich so lang dauert (da sind aber immer noch keine Netzwerkdrucker installiert). Und etwa zur gleichen Zeit ist auf meinem Rechner die Dauer deutlich nach oben geschnellt - natürlich ohne dass ich was an den installierten Druckern geändert hätte - im Gegenteil ich hab daraufhin mehrere lokale Drucker, die derzeit nicht gebraucht werden, entfernt - das hat an der Situation aber nix geändert.

Hmmm ... dabei fällt mir auf, dass die Kunden mit XP-Rechner sich gar nicht beschwert haben ...


cu boesi
 

Bert Brenner

Bekanntes Mitglied
Tja, dann bin ich auch raus.

Wenn du sonst vorher schon weisst welche Atribute gebraucht werden kannst du ja schon lookupPrintServices vorher im Hintergrund aufrufen um sie dann Parat zu haben wenn sie gebraucht werden.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben