HTML generieren und drucken (o.ä.)

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Apop85.

    HTML generieren und drucken (o.ä.)

    Hallo zusammen.

    Bin absoluter vb-newbie und bastel gerade an einem Rechner rum um mol/l in g/l ect umzurechnen.
    Das habe ich bisher gut hingekriegt nur würde ich noch gerne das Resultat der Berechnung in ein formatiertes Dokument (in meinem Beispiel html, jedoch weiß ich nicht was vb da noch bereit hält, evtl gibts ja noch was einfacheres/besseres)

    Das Problem welches ich gerade habe ist:
    1. End Sub wird nicht akzeptiert. Vb Express scheint den Code noch immer als html zu interpretieren. Was fehlt da noch? Habe ich die Variablen richtig integriert? Fehler: End of erwartet.
    2. Gibt es einen Befehl der das html Dokument gleich mittels browser druckt?

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim lHtmlDoc = <html>
    3. <head>
    4. <title>Umrechnung <%= Stoff %> von <%= ComboBox1.Text & "/" & ComboBox2.Text %> zu <%= ComboBox3.Text & "/" & ComboBox4.Text %></title>
    5. </head>
    6. <a align="center" style="text-align:center">
    7. <h1 align="center" style="padding:0px;margin:0px">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</h1>
    8. <h1 align="center" style="padding:0px;margin:0px">Umrechnung von <%= ComboBox1.Text & "/" & ComboBox2.Text %> zu <%= ComboBox3.Text & "/" & ComboBox4.Text %></h1>
    9. <h1 align="center" style="padding:0px;margin:0px">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</h1>
    10. <center><br>
    11. <br>
    12. <p style="padding:0px;margin:0px">Stoffname: <%= Stoff %><br></p>
    13. <p style="padding:0px;margin:0px">Molare Masse: <%= Masse %> g/mol<br></p>
    14. <p style="padding:0px;margin:0px">Externes Resultat: <%= Input %> <%= ComboBox1.Text & "/" & ComboBox2.Text %><br></p>
    15. <br>
    16. <br>
    17. <h4 style="text-align:center"><%= TextBoxInput.Text %><%= ComboBox1.Text & "/" & ComboBox2.Text %> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </h4>
    18. <h4 style="text-align:center">----------------------------- x <%= Multiplikator %> = <%= Answer %><%= ComboBox3.Text & "/" & ComboBox4.Text %></h4>
    19. <h4 style="text-align:center"><%= Masse %> g/mol &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </h4>
    20. <br>
    21. <br>
    22. <h6 align="center" style="padding:0px;margin:0px">xxxxxxxxxxxxxxx</h6>
    23. <h6 align="center" style="padding:0px;margin:0px">x &nbsp;ETTIKETTE&nbsp;&nbsp;x</h6>
    24. <h6 align="center" style="padding:0px;margin:0px">xxxxxxxxxxxxxxx</h6>
    25. <br>
    26. <br>
    27. </center><br>
    28. <p style="text-align:center">Datum: <%=Date.Today %> &nbsp; &nbsp; Visum:.....................<br></p>
    29. <br><center>
    30. <input align="center" type="button" onclick="window.print()" value='Drucken'>
    31. </p></center></body>
    32. </html>
    33. Dim lFile As String = ""
    34. lFile = print.AddExtension("html")
    35. lHtmlDoc.Save(lFile)
    36. Process.Start(lFile)
    37. End Sub
    38. End Class


    Danke für die Hilfe.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Apop85“ ()

    Also...
    Zuerst hast du deine lHtmlDoc-Variable nicht definiert. Dies würde mit OptionStrict ON, meine ich, nicht zugelassen.
    Dann hat ein String immer in Aunführungszeichen zu sein. (")
    Dann kannst du die Anführungszeichen für den Style aber nicht nutzen. Da musste du dann entweder einen Slash (/) davor schreiben oder einfache Anführungszeichen (') verwenden.
    Desweiteren muss ein String immer in einer Zeile sein, ausgenommen du brichst ihn mit " & _ um dann beginnst du die neue Zeile wieder mit einem Anführungszeichen.
    Dann ist print nicht definiert, sodass es keine AddExtension-Methode gibt. Außerdem hat eine String-Variable keine Methode Save.

    Zum Drucken braucht man eigentlich etwas fortgeschrittene Programmier-Kenntnisse, da du alles selbst Zeichnen musst.
    Auf msdn.microsoft.com/de-de/library/bb979081.aspx ist der Vorgang zum Drucken erläutert.
    Du solltest aber vielleicht vorher noch an einigen Grundlagen arbeiten. (Ich habe zumindest aus dem gestellten Code den Eindruck, dass dies nötig ist. Korrigiere mich wenn ich falsch liege.).

    Gruß
    HamburgerJungeJr
    Danke für dein Feedback.

    Ja du hast recht ich habe 0 Ahnung von vb. Habe es gerade mal letzte Woche installiert und hatte zuvor nichts damit zu tun. Auch habe ich außer in cmd absolut keine Erfahrung mit programmieren. Der Rechner soll ein Programm ersetzen welches ich mit 16bit Elementen als Batch geschrieben hab. Jedoch werden 16Bit Anwendungen ja nicht mehr unterstützt daher Bastel ich den rechner auf vb um. Ich will mich nach der Testphase eigentlich auch nicht registrieren um vb express weiter zu nutzen daher suche ich nach einer einfachen und schnellen Lösung. Wie gesagt fehlt mir das Fachwissen und die meisten Definitionen der Begriffe/Befehle daher bitte etwas Nachsicht.
    Ich Versuche mal zu interpretieren was du mir sagst ;) korrigier mich falls ich falsch liege.

    1. Ich muss bei public class noch die variable lHtmlDoc as String definieren?
    2. Das mit strict on versteh ich nicht
    3. Ich muss also die HTML in Anführungszeichen schreiben? Z.b.

    VB.NET-Quellcode

    1. lHtmlDoc = "<html>" &
    2. "<head>" &
    3. "<title>blabla</title>" &
    4. "</head>" &
    5. "</html>"

    4. Ich kann " nicht im Style verwenden. Heißt ich muss innerhalb der HTML alle " mit ' ersetzen?

    Zum drucken wurde mir folgendes empfohlen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim lHtmlDoc As String
    3. Dim WebBrowser1 As New WebBrowser
    4. Button Funktion:
    5. WebBrowser1.DocumentText = lHtmlDoc.ToString()
    6. While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    7. Application.DoEvents()
    8. End While WebBrowser1.Print()
    9. ' Bei End While habe ich noch den Fehler dass eine "End of Anweisung erwartet" wird

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Apop85“ ()

    Habe es jetzt mal so gelöst:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim WebBrowser1 As New WebBrowser
    3. Dim Variable As String = "Titel"
    4. ' eure Variablen
    5. Public Sub genHtml()
    6. Dim lHtmlDoc = <html>
    7. <head>
    8. <title>Dein <%= Variable %></title>
    9. </head>
    10. <body>
    11. ' Dein HTML Code
    12. </body>
    13. </html>
    14. Dim lFile As String = "C:\page.htm"
    15. ' Drucken
    16. WebBrowser1.DocumentText = lHtmlDoc.ToString()
    17. While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    18. Application.DoEvents()
    19. End While
    20. WebBrowser1.Print()
    21. End Sub
    22. ' Print-Button
    23. Private Sub ButtonPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPrint.Click
    24. genHtml()
    25. End Sub
    26. End Class


    Ich würde nur noch gerne Abstände nach OutputInp und OutputMas setzen um die Zeichen mehr nach links zu schieben. Es sollte wie ein Bruch aussehen jedoch stehen Nenner und Teiler im moment über dem =-Zeichen anstatt über dem Trennstrich. Siehe Printout.pdf
    Dateien
    • printout.pdf

      (4,54 kB, 642 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Apop85“ ()

    Wenn das der gesamte Code ist, wundert es mich, dass du das Programm überhaupt starten kannst.
    Es fehlen Zwei End Subs und ein End Class.

    Um dein Problem mit der Zentrierung zu lösen, könntest du die gesamte Formel in eine Tabelle mit 3 Zeilen und 2 Spalten packen und bei der ersten Spalte den Text Zentriert setzen.
    Das ist nicht der gesammte code. Es geht ja nicht primär um das Programm zum umrechnen sondern nur die Ausgabe einer html und den druck davon, diesen code habe ich oben angefügt (end sub und end class ergänzt) . Kann aber noch gerne den rest posten falls gewünscht oder falls hier üblich.

    Ist eigentlich Zeile 17 überhaupt notwendig oder kann ich die löschen? In dem Verzeichnis wird keine htm erstellt...

    Das mit der tabelle probiere ich gerade irgendwie hinzukriegen. Danke trotzdem.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Apop85“ ()