Drucken, Formulare (Reports?) ähnlich wie Virtual Print Engine

  • VB.NET

Es gibt 41 Antworten in diesem Thema. Der letzte Beitrag () ist von manni4545.

    Drucken, Formulare (Reports?) ähnlich wie Virtual Print Engine

    Hallo Leute,

    ich suche einen Printgenerator (ich weis nun kein besseres Wort dafür) um meine Rechnungen (80mm Bon oder A4) und Reports (nicht zwingend Datenbankreports) inkl. Grafiken elektronisch zu erstellen um diese dann entweder an den Drucker zu senden oder als PDF abzuspeichern.

    Bisher verwendete ich die Virtual Print Engine (Version 6) in meinen VB6 Anwendungen. Das funktionierte einwandfrei. Jedoch hat die VPE mit VB.NET und Windows 8 ihre Probleme und daher kann ich die wohl nicht verwenden.


    Dieser Code funktioniert leider unter Windows 8.1 64 Bit nicht mehr:
    Imports IDEALSoftware.VpeEnhanced
    Module mdl_vpe
    ''' <summary>
    ''' Testausgabe wird beim Laden aufgerufen
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub VPETest()
    Dim report As New VpeControl
    report.OpenDoc()
    report.Print(1, 1, "Hello World!")
    'report.Preview() 'Anwendung stürzt ab
    'report.PrintDoc(True) 'Anwendung stürzt nach Druckerauswahl ab
    'report.PrintDoc(False) 'Anwendung stürzt ab
    End Sub
    End Module



    Welche Alternativen gibt es bzw. was verwendet Ihr dazu?

    PS: Der Administrative Aufwand für die Installation sollte so gering wie möglich sein. Im Idealfall sollte nur eine oder mehrere DLL´s im Programmordner abgelegt werden und es muss schon funken. Am Besten wären natürlich .NET Hausmittel, wenns mit denen auch ginge.
    Umständliche und langwierige Installationen von Komponenten möchte ich vermeiden.

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Vielen Dank VB1963,

    klingt schon mal sehr interessant.

    Ich habe Dein tutorial gerade kurz überflogen um etwas bestimmtes zu finden, hab aber nichts davon gefunden. Aber vielleicht gibt es das ja eine solche Funktion gar nicht.

    Kann ich Beispielsweise den Text "hello world" währen der Laufzeit an eine bestimmte Position des Formulares setzten (z.B. 2cm von links und oben) und in einer bestimmten Schriftart ect. ? Geht das auch mit Linien oder Grafikdateien?

    Oder muss ich die Reports schon vorher "vordefinieren" und kann dann nur noch die vorgegebenen Felder befüllen?

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    @dive26:: Vielleicht gugst Du auch mal hier.
    Einen Report kannst Du als RTF-Datei vorbereiten. Füge dort in den Text Textmarken ein, z.B. __TEXTMARKE_1__.
    Und dann zum Ausdruck ersetzt Du vorher alle Marken:

    VB.NET-Quellcode

    1. txt = txt.Replace("__TEXTMARKE_1__", variable1)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Dive26:
    Beim Reportviewer muss man einen Report als Layout vordefinieren.
    In den angelegten Controls kann man dann Daten visualisieren, die via Parameterübergabe an den Report übergeben worden sind..
    Die Parameter können da auch in Formelausdrücke verwendet werden, um eine Schriftart oder Rahmenstärke , Farbe, Sichtbarkeit in Abhängigkeit eines Schwellwertes uvm. darzustellen.
    Auf Grafiken kann man extern zugreifen oder gleich dem Report eingebettet zur Verfügung stellen. Diese sind ebenso auf Grund von logischen Formelausdrücken umschaltbar bzw. sichtbar zu stellen.
    Da kann man sich fast unbegrenzt austoben. Nur muss vorher im Report ein Layout erstellt werden...
    Danke Rod und VB1962.

    Ich fürchte aber, dass ich aufgrund der Struktur von Reports eher auf das "händische" Erstellen der Ausdrucke zurückgreifen muss. Ich kann keine vordefinierten Textmarken setzen oder Layouts definieren, da ich dem Kunden bei der Formulargestaltung freien Lauf lassen möchte. Also könnte jedes Formular anders aussehen.

    Denn ich möchte über einen eigenen "Formulardesigner" dem Kunden selbst die Möglichkeiten geben verschiedene Elemente wie Fixtexte, Grafiken, Linien und Variablen (aus der Software) anzudrucken. Das hat sich bisher so als sehr effektiv und individuell herausgestellt.

    Mit VPE ging es so:

    VB.NET-Quellcode

    1. VPE.PrintBox 1, 1, "Hello World" 'Text 1cm von links und oben
    2. VPE.VpeLine 1, 2, 20, 2 'Horizonale Linie
    3. VPE.Picture 3, 3, 6, 6, "c:\bild.jpg" 'Bild in einem Virtuellen Rahmen von 3x3cm


    Das könnte ich sicher auch mit PrintDocument() mit etwas Programmieraufwand hinbekommen. Jedoch direkt speichern als PDF geht da wiederum nicht. Und die PrintPreview Anzeige ist ja alles andere als "optisch modern". Es wäre zwar eine Lösung ohne externe Komponenten (was mir sehr gefällt), aber der fehlende PDF-Export könnte ein Problem sein. Oder hat da von Euch jemand eine Lösung parat ;)

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dive26“ ()

    Kann man das nicht mit GDI+ machen und als Bitmap speichern und drucken?
    Du musst dir dann dafür eben nur einen eigenen Editor schreiben (Falls benötigt), dann könnte man sich auch ohne große Kenntnisse ein Formular selbst zusammenklicken.
    Wobei die PDF dann nur ein reines Bild wäre.
    Danke Eistee,

    aber dann wären die PDF-Dateien viel zu groß. In einer neuen Software darf das nicht so sein.

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Früher habe ich mit FastReport gearbeitet, da deutlich preiswerter und intuitiver als die professionelleren Lösungen wie z.B. List+Label Crystal Reports usw. Praktisch hat nahezu keiner die Möglichkeit genutzt Reports selber anzupassen.
    Zur Zeit verwende ich Richttexts. Die waren aber ausgesprochen störrisch wenn man Tabellen erstellen will.
    HTML ist ungünstig weil Graphiken i.d.R. nicht eingebettet sind.
    Eine bessere Lösung such ich aber auch.
    Am liebsten wäre mir eine bezahlbare XML-XST-Lösung: Ich erstelle ein XML und ein gepimpte-XST-Variante ist für das Layout zuständig.
    Ich werde mich mal mit einem PDF-Druckertreiberanbieter kurzschließen. Vielleicht gibt es die Möglichkeit auf einem PDF-Drucker im Hintergrund auszudrucken und dabei gleich den Dateinamen anzugeben. Das wäre schon einmal eine Lösung. Da kann ich auch programmtechnisch abfragen ob dieser Druckertreiber installiert ist (oder diesen gleich automatisiert installieren lassen) und nur dann einen PDF-Export anbieten.

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Nur wegen der Vollständigkeit - einen Report vom ReportViewer kann man auch ohne Weiteres in eine PDF umlenken, der ist nicht nur zum Drucken da...
    Ich denke nur, wenn der Kunde seine Rechnung selber designen will, wird er wahrscheinlich froh sein, wenn er auf Basislayouts zurrückgreifen kann. Und diese kann er dann nach seinen Bedürfnissen formatieren. Da meine ich Schriftart, Rahmenart, Rahmenschatten, Farbe, Übergabe eines Firmenlogos usw. auswählen und festlegen...
    Der Grundraster einer Rechnung bleibt doch immer gleich, denke ich...
    Danke Leute,

    um wirklich sehr flexibel zu bleiben, ist die Layoutänderung während der Laufzeit unbedingt notwendig. So habe ich das auch schon in meiner Hotelsoftware und Auftragssoftware gehandhabt und es hat sich als sehr effektiv herausgestellt und es ist sogut wie jede Individualisierung möglich. Natürlich kann der Bereich wo die Positionen angedruckt wird nur bedingt modifiziert werden, aber alles andere rundherum soll der Kunde individuell machen können. Hier die aktuelle VB6 Lösung mit VPE . Und es geht ja nicht nur um die Rechnungsformulare, sondern ich möchte auch mit wenig Aufwand verschiedene Berichte und Datenauswertungen ausgeben lassen können. Das ging mit VPE bisher hervorragend einfach. So würde es auch mit PrintDocument() gehen, nur eben mit fehlender (interner) PDF-Exportmöglichkeit

    Ich habe nun zwei Ansätze die vielversprechend aussehen.

    a) Virtual Print Enginge findet eine Möglichkeit auch unter Windows 8 64 Bit zu laufen (das wäre die beste Option)

    b) Drucken mit PrintDocument() auf den freien PDF Drucker "eDocPrintPro" mit einem Zusatzprogramm, welches den Speicherdialog unterdrückt und den Druck gleich in einen Ordner umleitet (soetwas gibt es schon )

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Hab im Herstellerforum schon vor einiger Zeit gepostet (wie so andere auch), aber nur die lapidare Antwort bekommen - das was es gibt auszuprobieren und dass es keine offizielle 64 Bit Unterstützung gibt.

    Habe heute eine Email hingeschrieben, vielleicht bekomme ich eine definitve Aussage ob da was kommt oder nicht.

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
    Du kannst dein Programm auch auf 32bit zwingen.
    Für die vorhandene Software eine Möglichkeit. Aber wie "zwinge" ich das Programm auf 32 Bit? Da es sich um ein VB6 Programm handelt, denke ich es wird ohnehin im 32 Bit Modus ausgeführt. Oder hast Du da eine andere Info, das wäre toll.

    Für die neue Software kommt das nicht in Frage. Die soll 100% 64 Bit kompatible werden, ohne Abstriche.
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at