Drucker und Druckerschacht für Ausdruck festlegen

Hallo an alle hier,

ich habe die Anforderung, für den Ausdruck eines List&Label-Projektes einen vordefinierten Drucker und auch den zu verwendene Druckerschacht je nach Arbeitsplatz, an dem das Projekt ausgedruckt werden soll, dynamisch zu ändern. Bei meinen Recherchen bin ich auf folgenden Lösungsansatz gestossen.

  1. Demn Ausdruck nicht direkt, sondern in eine Previewdate auszuführen
  2. Diese Previewdatei dann zu öffnen und vor dem Ausdruck für jede Seite, den Drucker und auch den Druckerschacht explizit festzulegen.

Ist diese Vorgehensweise erst mal richtigt, oder gibt es da auch einen anderen Weg?
Das Projekt selbst anzupassen funktioniert nicht, weil das Projekt sich auf einem Netzwerkshare liegt, auf das mehrere Benutzer zugreifen. Ich könnte das Projekt zwar vor jedem Ausdruck in ein lokales Verzeichnis kopieren und dort ändern, aber ich denke, das wäre keine effiziente Vorgehensweise.

Zu Punkt 1 habe ich im Moment das Problem, das ich zwar den Ausdruck wie folgt starte, aber der Ausdruck trotzdem auf dem Drucker ausgegeben wird und keine Vorschaudatei angelegt wird.

listLabel.Print(this.ProjectType, this.ProjectFile, false, LlPrintMode.Preview);

Ich habe einen Eventhandler für DefinePrintOptions registriert, in dem ich den Namen de Previewdatei über folgenden Code festlege:

listLabel.Core.LlSetOptionString(LlOptionString.PreviewFileName, previewFileName);

Was muss ich noch machen, damit der Ausdruck in die Previewdatei ausgegeben wird?

VG, Jan

wie wär’s, den Druckerschacht über DOM zu setzen?

Oder anders gefragt: woher weißt Du, welcher Drucker/Schacht es sein soll (je nach Treiber unterschiedlich etc)?

Alternativen:

LlSetPrinterInPrinterFile()
LlSetPrinterDefaultsDir() (jeder User ein eigenes P-File)

Paulchen

Das über DOM zu machen, war einer meiner Überlegunge. Aber dann würde ich ja die Vorlage auf dem Netzwerkshare ändern und das würde sich dann ja auf alle Benutzer auswirken.

Es ist hier so, dass das Design des List&Label Formulares bei uns im Haus, also mit ganz anderen Druckern, als später beim Kunden erstellt wird. Und auch beim Kunden sind an unterschiedlichen Arbeitsplätzen unterschiedliche Drucker im Einsatz, bei denen auch je nach Formular auch unterschiedliche Druckerschächte angesteuert werden müssen.

In eine Konfigurationstabelle wird bei uns hinterlegt, welches Formular an welchem Arbeitsplatz mit welchem Drucker über welchen Druckerschacht ausgedruckt werden soll.

Habe beim Öffnen des Formulares über DOM übrigens immer eine Exception bekommen und im Debug-Log von combit diesen Eintrag hier gefunden:

11:11:11.342 00001c30 =-23 (Einer der verwendeten Ausdrücke hat einen Fehler. Beim Designstart werden die Fehler interaktiv angezeigt. In anderen Fällen benutzen Sie den Debug-Modus zur Bestimmung des Fehlers.)
clrjit.dll | 11:11:11.342 00001c30 LlGetErrortext(-23,0X08F36DB8,16384)

Das bezog sich auf Variablen, die ich beim normalen Ausdruck im Event AutoDefineNewPage über listLabel.Variables.AddFromDictionary hinzufüge. Das Event wird ja beim Öffnen über DOM nicht ausgelöst. Wann und wie muss ich denn die Variablen hier hinzufügen? (Nur so aus Interesse, ich denke über DOM ist nicht der beste Weg).

VG, Jan

Doch, Du kannst Dich nach LlPrintStart() per DOM an die DOM-Root per LlDomGetProject() ranhangeln :wink:

Da kannst Du dann, ohne auf der Platte irgendwas ändern zu müssen, das Projekt on the fly verändern.

Paulchen

Danke für die Info, Paulchen! Werde ich dann gleich mal ausprobieren.