Direktdruck ohne Druckdialog

Guten Tag Leute

Ich versuche, den Report direkt zu drucken, ohne den Dialog mit den Druckeigenschaften zu öffnen, aber sicherlich stimmt da noch etwas nicht.

Ich habe mehrere Beiträge im Forum verfolgt, weil ich kein vollständiges Beispiel finden konnte und kam zu diesem Ergebnis:

Der Handler bei der Ereignis

LL_DefinePrintOptions(this, EventArgs.Empty);

Das Ereignis

        private void LL_DefinePrintOptions(object sender, EventArgs e)
         {
         LL.Core.LlPrintSetOptionString(LlPrintOptionString.PrintJobname, "DRK");
         LL.AutoShowPrintOptions = false;
         PrinterSettings settings = new PrinterSettings();
         ProjectList proj = new ProjectList(LL);
         proj.GetFromParent();
         proj.Regions[0].Device.Name = settings.PrinterName;
      }

Der Fehler
Es wurde eine Druckfunktion aufgerufen, obwohl noch kein Druckjob gestartet wurde oder das Projekt enthält keine Objekte.

Eigentlich braucht es nur das AutoShowPrintOptions = false, das aber vor dem eigentlichen Druck, nicht im Eventhandler. Am einfachsten schaust Du mal in ein Debuglog, dann müssten Dich die Fehler eigentlich recht schnell anspringen. Der Druckername muss - es ist eine Formel - in Anführungszeichen ;). So geht es bei mir:

LL.AutoProjectFile = @"...";
LL.AutoProjectType = LlProject.List;
LL.AutoShowSelectFile = false;
LL.AutoShowPrintOptions = false;
LL.DefinePrintOptions += LL_DefinePrintOptions;
LL.Print();

Der Eventhandler sieht dann so aus:

private void LL_DefinePrintOptions(object sender, EventArgs e)
{
    (sender as ListLabel).Core.LlPrintSetOptionString(LlPrintOptionString.PrintJobname, "DRK");
    PrinterSettings settings = new PrinterSettings();
    ProjectList proj = new ProjectList(LL);
    proj.GetFromParent();
    proj.Regions[0].Device.Name = $"'{settings.PrinterName}'";
}

Das war genau das problem.
Vielen Dank, jetzt funktioniert es perfekt!

2 Likes