Drucker setzen unter VB.NET

Hallo zusammen,

habe mich schon fast totgesucht, aber nicht das passende gefunden. Für LL13 möchte ich in VB.NET im Programm einen Drucker setzen (Label), den der Benutzer zuvor aus der Liste der vorhandenen Drucker ausgewählt hat.

Habe es schon so versucht (Drucker_Versandetiketten enthält den Namen des ausgewählten Druckers:

sFilename = Application.StartupPath & “\Druckdateien\versandetikett.lbl”

'Drucker setzen
LL2.Core.LlSetPrinterInPrinterFile(combit.ListLabel13.LlProject.List, sFilename, Drucker_Versandetiketten)

'Drucken
LL2.Print(combit.ListLabel13.LlProject.Label, sFilename, False, combit.ListLabel13.LlPrintMode.Normal, combit.ListLabel13.LlBoxType.BridgeMeter, “Drucke Versandetikett…”, True, “”)

Der Druck funktioniert, aber nur auf den Standarddrucker. Der ausgewählte Drucker wird ignoriert.
Was mache ich falsch?
Oder hat jemand ein funktionierendes (VB.NET) Beispiel für mich?

Hallo Herr Ewe,

vielen Dank für Ihren Beitrag.

Bitte prüfen Sie einmal im Debwin-Logfile, ob der mitgegebene Drucker (Drucker_Versandetiketten) während des Drucks verfügbar ist. Wenn dieser nicht verfügbar sein sollte, dann greift ein LL-interner Fallback und der auf dem System eingerichtete Standarddrucker wird verwendet. Stellen Sie bitte auch sicher, dass die mittels LlSetPrinterInPrinterFile() erstellte “versandetikett.lbp” in dem Verzeichnis "Application.StartupPath & “\Druckdateien"” vorhanden ist.

Mit dem bei LL13 mitgelieferten Etiketten-Druck Beispiel für VB.NET ließ sich das Verhalten nicht nachstellen. Können Sie das Verhalten auch mit der aktuellen Version 18 von List & Label nachstellen?

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH

Wenn ich den Druck mit “Optionen anzeigen” starte, kann ich den Drucker auswählen und permament speichern. Dann erzeugt LL die “versandetikett.lbp” für diesen Drucker.

Beim nächsten Versuch einen anderen Drucker zu setzen (ohne Optionen anzeigen), greift er trotzdem auf den “alten” Drucker zurück. Durch die .lbp-Datei?

Möchte aber den User einen Drucker seines Systems auswählen lassen. Einmalig und beliebig änderbar durch den User. Also mal der Drucker… oder der… oder der…

Oder habe ich da etwas systematisch bei LL nicht verstanden?
(LL18 habe ich leider nicht)

Hallo Herr Ewe,

vielen Dank für Ihren Beitrag.

List & Label prüft beim Druckbeginn, ob eine Drucker-Konfigurationsdatei (*.lbp) im Verzeichnis der Druckvorlage vorhanden ist. Wenn dies der Fall ist, dann werden die Einstellungen aus diesem File verwendet. Wenn es also jedes Mal ein anderer Drucker sein kann/soll, dann empfiehlt sich vorher eine evtl. vorhandene Konfigurationsdatei mittels “LlSetPrinterToDefault()” zu löschen und anschließend den gewünschten Drucker mittels “LlSetPrinterInPrinterFile()” zu übergeben.

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH

Das hat funktioniert. Vielen Dank. :slight_smile:

Eine Frage habe ich noch… kann man dem Drucker noch mitteilen, welchen Druckerschacht er verwenden soll?

Hallo Herr Ewe,

vielen Dank für Ihren Beitrag.

Ja, dies ist möglich. Entweder geben Sie dies direkt in der DEVMODE mit oder aber per DOM-API. Per DOM könnte es wie folgt aussehen:

Dim proj As New ProjectList(LL) proj.Open("csdfs", LlDomFileMode.Open, LlDomAccessMode.ReadWrite, True) proj.Regions(0).SourceTray = "1" 'Schacht 1 proj.Regions(1).SourceTray = "4" 'Schacht 4 proj.Save() proj.Close()

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH