Problem mit zusammengesetztem Bericht

Hi zusammen,
wir haben kürlich von LL21 zu LL27 gewechselt.
Jetzt haben wir das “Problem”, dass wenn man zusammengesetzte Reports über das Preview anzeigt und dann drucken will, man für jede Seite den Drucker einzeln auswählen muss. Gibt es dafür eine Lösung oder wurde der Aufruf der .LL-Dateien mittlerweile angepasst? Ich nutze da

LL.IncrementalPreview = false;
LL.Core.LlPreviewDisplay(destPathes[0], destPathes[0].Replace("Vorschau.LL", ""), IntPtr.Zero);

Hallo,
wenn in den einzelnen Vorschaudateien verschiedene Drucker in der Projektdatei eingetragen sind, werden Sie hier nach den Druckern gefragt. Versuchen Sie bitte einmal die Option „LL_OPTION_FORCE_DEFAULT_PRINTER_IN_PREVIEW“ auf „true“ zu setzen. In diesem Fall werden an die Preview die Druckernameneinstellungen nicht übergeben und es wird der Standarddrucker ausgewählt. Unter .NET können Sie die Option folgendermaßen setzen:

LL.Core.LlSetOption(176, 1);

Hallo, danke für die schnelle Antwort.
Es wird ja für alle Seiten der Standarddrucker ausgewählt, aber wir drucken die Berichte oft an mehreren verschiedenen Arbeitsstationen. Hier muss ich dann für jede Seite den entsprechenden Drucker auswählen. Das machen meine Benutzer nicht mit, gerade weil sie es aus der LL21-Version ja anders kennen.

Idee, fang den Klick auf den Druck Button in der Vorschau ab, unterdrücke das drucken und drucke die Vorschaudatei (oder eine Kopie davon) über die PreviewFile Klasse,

da kannst ja den Drucker mit übergeben, irgendwie sowas halt :slight_smile:

ll.ViewerButtonClicked += (o, args) =>
{
if (args.Id != 16496) return; //kannst auch die Action abfragen.
args.IsProcessed = false;
var pf = new PreviewFile(@“preview1.LL”, false, “”, LlLanguage.German, true);
var pf2 = new PreviewFile(@“preview2.LL”, false, “”, LlLanguage.German, true);
pf.Append(pf2);
pf.Print(“DruckerX”);

};

hier die Doku zu dem Print Aufruf:

Moin,
danke für deine Antwort.
Ich verstehe den Ansatz, leider ist das auch nicht optimal, weil ich dann den Drucker vor dem Aufruf vom Benutzer abfragen müsste, der ist nämlich nicht fix sondern kann sich pro Aufruf unterscheiden. Oder gibt es die Möglichkeit den Drucker der ersten File auszulesen?

Hi Jonas, es gibt eine LL API Methode über die kannst du dir den im Preview File gespeicherten Druckernamen holen- > “LlStgsysGetPagePrinter”, hier müsstest du aber dann die Storage API´s verwenden, oder die PreviewFile Klasse erweitern oder so :slight_smile:

Blöd ist aber das es diese Methode gar nicht gibt im .NET, selber invoken oder combit fragen ob die es dir für die neue Version bereitstellen möchten :slight_smile:

Fürs selber machen hier ein Anreiz (Quick&Dirty) geht sicher auch schöner usw.


        [DllImport("cmls28.dll", EntryPoint = "LlStgsysGetPagePrinter", CharSet = CharSet.Unicode)]
        internal static extern int LlStgsysGetPagePrinter(
            IntPtr storageHandle,
            int pageIndex,
            StringBuilder pszPrinter,
            int nPrinterBufSize,
            IntPtr pDevMode);
.......

            var p1 = LlCore.LlStgsysStorageOpen (@"preview1.LL", String.Empty, false, true);
            var p2 = LlCore.LlStgsysStorageOpen (@"preview2.LL", String.Empty, false, true);
            StringBuilder printer = new StringBuilder();

            var test = LlStgsysGetPagePrinter(p1, 1, printer, 256, IntPtr.Zero);

Viel Erfolg :wink:

Kreative Idee @Erdal_Alacali, aber um bei .NET zu bleiben kann man ja über Pages-Eigenschaft der PreviewFile-Klasse auch auf die einzelnen Seiten zugreifen und dort dann auch direkt den Druckernamen über die PrinterName-Eigenschaft abrufen - braucht daher eigentlich nicht den Umweg über das native anmelden der DLL-Funktion oder eine Anpassung von combit für deinen Ansatz.

1 Like

Stimmt warum einfach wenn auch kompliziert, danke Oliver :slight_smile:


pf.Pages[0].PrinterName usw.
2 Likes

Vielen Dank für eure schnellen Antworten!
Jetzt habe ich schon mal eine Lösung. Ich bin allerdings immer noch nicht so ganz zufrieden. Dem Benutzer werden ja immer noch mehrere Seitenlayouts beim Drucken angezeigt. Wieso ist das denn überhaupt so? ich führe die Previews doch zusammen…
Kann ich darauf hier mit einer Antwort rechnen oder sollte ich dafür einen Support-Case aufmachen?

LG und nochmals Danke!

Melden Sie sich gerne einmal bei unserem Support - da brauchen wir vermutlich einige Informationen zur Prüfung.

1 Like