+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Print vs LlPreviewDisplay mit LlSetOptionString


(Peter Koch) #1

Hallo,
ich würde gerne für meine Firma ListLabel Enterprise bestellen und
bin wirklich sehr angetan. Jedoch sind bei den Tests noch einige Frage hochgekommen.

z.B. Folgender Code funktioniert mit ListLabel 20 und C#

[code]LL.Core.LlSetOptionString(LlOptionString.Exports_Allowed, “PDF”);
LL.Core.LlSetOptionString(LlOptionString.ExportsAllowedInPreview, “PDF;PRN”);
LL.Core.LlSetOptionString(LlOptionString.PreviewFileName, “TEST”);

ProjectParameter ProjParam2 = LL.ProjectParameters[LlProjectParameter.SaveAsFilename];
ProjParam2.ParameterType = LlProjectParameterType.Value;
ProjParam2.Value = “C:\temp\myPDF.pdf”;
LL.ProjectParameters.Add(ProjParam2);

LL.AutoProjectFile = “simple_unicode.lbl”;
LL.AutoProjectType = LlProject.Label;
LL.AutoShowSelectFile = false;
LL.AutoShowPrintOptions = false;
LL.Print();
[/code]im Preview ist somit nur Export zu Druckern und PDF möglich und Export Filename ist vorbelegt.

Nun möchten wir aber PreviewFiles Mergen und in der Preview anzeigen.
Geht soweit so… Email/Fax kann noch abgeschaltet werden der Rest geht leider nicht.

[code]…Code wie http://www.combit.net/de-de/reporting/reportdesigner-vorschaudateien

//NOT WORKING
LL.Core.LlSetOptionString(LlOptionString.Exports_Allowed, “PDF;PRN”);
LL.Core.LlSetOptionString(LlOptionString.ExportsAllowedInPreview, “PDF;PRN”);
LL.Core.LlSetOptionString(LlOptionString.PreviewFileName, @“C:\temp\test.pdf”);

// WORKS
LL.Core.LlViewerProhibitAction(LlViewerAction.SendTo);
LL.Core.LlViewerProhibitAction(LlViewerAction.SlideshowMode);

// SHOW MERGED PREVIEW FILE
IntPtr handle = IntPtr.Zero;
LL.IncrementalPreview = false;
LL.Core.LlPreviewDisplay(@“c:\temp\invoice.ll”, “”, handle);
LL.IncrementalPreview = true;
[/code]
Sonst muss man sagen, einfach nur ein Weltklasse Produkt!

Klar wäre ein Workaround, mit Export komplett abschalten, und auf einen “Export PDF” Button legen möglich.
Aber wir sind der Meinung das unsere User immer ein Preview haben sollen bevor es aus der Anwendung raus geht.

Sei es über direkt Print() oder durch laden von PreviewFiles. Das soll sich immer gleich verhalten.
Das Embedded ViewerControl ist okay, sieht aber veraltet aus und übernimmt gar keine Parameter bei PreviewFiles. Kommt also nicht in Frage.

Beste Grüße.


(Oliver Hambrecht) #2

Hallo,

wir hatten damals eine ähnliche Anforderung… und wenn ich mich korrekt entsinne, hatte uns hierzu der combit Support den folgenden Tipp gegeben, wie man das lösen kann:
Man solle das PreviewControl verwenden und dort die Toolbar komplett deaktivieren (ohne Ribbon sieht die wirklich noch old-school aus), so dass man nur noch die reine Vorschau hat: PreviewControl.ShowToolbar = false;

Nun erstellt man sich einfach oberhalb des PreviewControls eine eigene Toolbar mit lediglich den Funktionen die man für das PreviewControl benötigt - und ggf. noch zusätzliche kontextspezifische Funktionen aus der Anwendung selbst heraus. Und nun einfach die PreviewControl-Funktionen auf die eigenen Buttons mappen - wie bspw. PreviewControl.GotoNext(); Und bei den eigenen Druck/Export Buttons entsprechend entweder die PreviewFile.ConvertTo()-Funktion für den Export oder PreviewFile.Print()-Funktion für den Druck aufrufen. Manchmal gibt es bspw. in der Vorschau keinen XLSX-Export. Diesen müsste man sich dann auch eh mit eigenen Mitteln implementieren: Einfach den dahinter liegenden Druck/Export der LL-Komponente erneut ausführen lassen.

Leider kann ich dir hier erstmal nicht mehr schreiben, da es schon ein Weilchen her ist. Aber der Support hatte uns hier damals sehr gut unterstützt. Doch mit obigen Ansatz lässt sich was schönen und auch unabhängiges basteln. An dein “Weltklasse Produkt!” kann ich mich nur dran hängen - wir sind seit Jahren dabei :wink:


(Peter Koch) #3

Hi Oliver,

danke für dein Feedback. Den Ansatz kann ich bachvollziehen wenn man wirklich
sein eigenes UI haben möchte mit eigenen Icons + super spezielle Features wie OnDemand
Updates in Reports durch Anpassungen im Table daneben oder mehrere Reports nebeneinander, etc.

Bei der Frage hier geht wirklich nur um ein paar wenige “Config”-Parameter
für die wirklich gelungene Preview Anzeige mit der eigentlich breits verfügbaren
Funktionalität.

Das Ding kann praktisch alles was gebraucht wird, eher sogar mehr - nur das es mal geht
die Parameter anzuwenden und in dem einen oder anderen Fall eben nicht.

Es ist mir wirklich ein Rätsel warum, es sind ja nur Einstellungen
an der Oberfläche die breits implementiert sind.

Sonst wäre es ja in keinem Fall des Aufrufs möglich - eher ein Bug und keine neue Features.

Das kann sich evtl. mit Call Reihenfolgen oder einem verloren Handle/Bezug auf das neue Window erklären.
Das ist aber Aufgabe von Combit.

Evtl. reicht ein SendMessages an das Window wie in diesem Fall
https://www.combit.net/reporting/forum/?forumid=7&threadid=7424

Das wäre z.B. eine nicht aufwendige und akzeptable Lösung.

Gerade das ist für uns der Vorteil warum wir uns dann für List&Label entscheiden.
Designer und Preview (fast) perfekt integriert. Getestet und gekapselt…

Hier selbst nochmal versuchen die Preview Anzeige nach zu implementieren
zu testen, auf neue Problem zu stoßen, wäre doch ein Widerspruch.
Alleine schon wegen Zeit und Kosten.

Viele Grüße. Peter.


(combit Support - Erdal Alacali) #4

Sehr geehrter Herr Koch,

vielen Dank für Ihren Beitrag.

Wie auch die Druckerdefinition werden diese Informationen in die Storage-Datei (Vorschaudatei) geschrieben, beim Anzeigen werden diese Informationen von List & Label ausgelesen, in Ihrem Fall müssten Sie folgende Eigenschaften/Optionen vor dem Erstellen der Vorschaudatei setzen.

z.B.

[code] LL.Core.LlSetOptionString(LlOptionString.ExportsAllowedInPreview, “PDF;PRN”);
ProjectParameter ProjParam2 = LL.ProjectParameters[LlProjectParameter.SaveAsFilename];
ProjParam2.ParameterType = LlProjectParameterType.Value;
ProjParam2.Value = “C:\temp\myPDF.pdf”;
LL.ProjectParameters.Add(ProjParam2);

            ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Preview, @"c:\temp\myPreview.LL, "simple.lst");
            LL.Export(exportConfiguration);
            //anzeigen der Datei
            LL.IncrementalPreview = false;
            LL.Core.LlPreviewDisplay(@"c:\temp\myPreview.LL,"",IntPtr.Zero);[/code]

Die Anforderung, die erlaubten Export Formate vor dem Öffnen der Vorschaudatei festzulegen, habe ich als Verbesserungsvorschlag / Wunsch in unserer Liste aufgenommen, sobald es hierzu Änderungen gibt, werden Sie darüber informiert.

Mit freundlichen Grüßen

Erdal Alacali
Technischer Support
combit GmbH


(Peter Koch) #5

Hallo Herr Alacali,

genau das war es. Funktioniert wie gewünscht.
Für den Verbesserungsvorschlag hätte hier eine Demo Anwendung oder
etwas in der Doku gereicht, wann welche Parameter funktionieren.

Danke!