[VB.NET] E-Book Creator v.3.5 by fachsimpeln

    • Beta
    • Open Source

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Vainamo V.

      [VB.NET] E-Book Creator v.3.5 by fachsimpeln

      Name:
      E-Book Creator v.3.5 - fachsimpeln

      Beschreibung:
      Grundsetzlich erstellt das Programm E-Book Creator v.3.5 HTML-Dateien, die dann später mit exteren Programmen (z.B. Kindle-Previewer oder Calibre) zu einem fertigen E-Book im .mobi bzw. im .epub Format gespeichert werden können. Zusätzlich werden alle wichtigen Zusatzdateien automatisch erstellt. Ein Prolog oder ein Epilog kann natürlich auch hinzugefügt werden.

      Wenn Sie die fertigen Dateien mit dem Kindle Previewer (amazon.com/gp/feature.html?docId=1000765261) zu einem fertigen E-Book konvertieren möchten, ziehen Sie einfach die *.opf Datei (hier: Mein Buch.opf) in das Hauptfenster des Kindle Previewers.

      ACHTUNG: Beim Programmstart wird eine Messagebox geöffnet, diese könnte jedoch unter Umständen hinter der Begrüßungsform geöffnet werden. Also bitte auf die Taskleiste achten.

      Screenshot(s):


      Das Hauptmenü


      Der Editor


      Die erstellten Dateien


      Kapitel 1 - HTML Datei (geöffnet mit Notepad++)


      Verwendete Programmiersprache(n) und IDE(s):
      Visual Basic .NET / IDE Visual Studio Express 2012

      Systemanforderungen:
      - .NET Framework 4.5
      - Windows
      - Internet (freie Lizenzüberprüfung -> kein Productkey o.Ä.)

      Systemveränderungen:
      Dateien werden auf einem durch den Benutzer einstellbaren Pfad erstellt (s. Screenshots\Die erstellten Dateien)

      Download(s):
      Download entfernt - Sorry

      MD5: a39e03c40190bfcb2d77b12ae6f44a0f

      Lizenz/Weitergabe:
      Open Source
      Freeware (bei Update/Verkauf kann das Programm von fachsimpeln deaktiviert werden)
      Keine Weitergabe, nur in diesem Forum (vb-paradise.de/)

      Source Code:
      Startmenü:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Imports System.Net
      2. Public Class Start
      3. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
      4. Dim op As New OpenFileDialog
      5. op.Title = "Öffne Cover-Bild"
      6. op.FileName = ""
      7. op.ShowDialog()
      8. TextBox2.Text = op.FileName
      9. PictureBox1.ImageLocation = op.FileName
      10. End Sub
      11. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
      12. Application.Exit()
      13. End Sub
      14. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
      15. FolderBrowserDialog1.ShowDialog()
      16. TextBox4.Text = FolderBrowserDialog1.SelectedPath
      17. End Sub
      18. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      19. If TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or RichTextBox1.Text = "" Or RichTextBox2.Text = "" Then
      20. MsgBox("Bitte geben Sie alle Daten an!", MsgBoxStyle.Exclamation, "Warnung!")
      21. Else
      22. Editor.Show()
      23. Me.Hide()
      24. End If
      25. End Sub
      26. Private Sub Start_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      27. Dim Web As New WebClient
      28. Try
      29. Dim Aktiv As String = Web.DownloadString("https://www.dropbox.com/s/mto6uhbstu4i911/Aktiv.txt?dl=1")
      30. If Aktiv = "True" Then
      31. MsgBox("Sie verwenden nun die freie Version von E-Book Creator v.3.5.")
      32. Else
      33. MsgBox("Diese freie Lizenz ist leider abgelaufen...", MsgBoxStyle.Critical, "Sorry :( ")
      34. Application.Exit()
      35. End If
      36. Catch ex As Exception
      37. MsgBox("Ihre freie Lizenz kann leider nicht überprüft werden... Bitte stellen Sie eine Internetverbindung her und starten Sie das Programm erneut!", MsgBoxStyle.Exclamation, "Fehler bei der Lizenzüberprüfung...")
      38. Application.Exit()
      39. End Try
      40. End Sub
      41. End Class


      -Download entfernt - Sorry :(


      Die Form 'Texte' dient nur als String-Speicher.
      Die Form 'Begrüßung' ist nur eine Begrüßungsform.

      Das Projekt wird hier nicht hinterlegt, da ich das Programm gerne immer noch extern deaktivieren können möchten.





      Danke schonmal im Vorraus für ihre Rückmeldung! :)

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

      Rote Farbe entfernt.

      Das Design ist Dir leider gar nicht gelungen, das sieht nicht gut aus. So bunt, wild durcheinander, JPEGs etc. Warum kein normales Windows-UI?

      fachsimpeln schrieb:

      Virustotal Scan: 2/55 (liegt an der Code-Verschlüsselung (PE:Trojan.Confuser!1.A352 [F]) )
      Und was ist da so schützenswert? ;) So werde ich das Programm auf jeden Fall nicht laden, zumal Obfuskatoren Deinen Code ranzig und langsam machen.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hi Trade,
      danke für dein Feedback.

      Meine Programme haben meist ein sehr sehr schlechtes Design, aber ich finde das stinknormale Windows-Design nicht wirklich schön.

      Der Code ist jetzt auch verfügbar, außerdem ist das Programm jetzt in seiner Rohfassung hochgeladen, d.h. keinen Obfuskatoren ;)
      Du kannst es also decompilen und dir den Code anschauen und dann ausführen (oder auch nicht).

      Für den Virenscanner, der das Programm als Virus erkannt hat, habe ich allerdings keine Erklärung mehr.

      Noch einen schönen Tag,
      fachsimpeln

      fachsimpeln schrieb:

      ACHTUNG: Beim Programmstart wird eine Messagebox geöffnet, diese könnte jedoch unter Umständen hinter der Begrüßungsform geöffnet werden. Also bitte auf die Taskleiste achten.


      Wenn du so etwas schreibst, dann ist da etwas unsauber programmiert. Mit Dialogen wird dort gearbeitet, wo es nötig ist, z. B. Einstellungen oder Datei-speichern-Dialog.

      Außerdem muss ich mich der Meinung von @Trade anschließen: Wenn man nicht die Design-Richtlinien von Microsoft mag, kann ich das nachvollziehen, aber das Design dieser Anwendung ist Augenkrebs! Grüner Text auf weißem Grund ist kaum erkennbar, wenn die Schrift so klein ist. Wenn dir die Standard-Controls nicht gefallen kannst du dir eine DLL, wie MetroSuite verwenden. Verwende bitte, wenn du einen hellen Hintergrund hast, eine dunkle Farbe für die Schrift, als nicht #FFFFFF, sondern eher #004400. Sonst bekommt man wirklich Augenschmerzen bei längerer Benutzung des Programmes.

      Wieso NICHT: Entertaste!!! Keine Absätze im ersten Screenshot? Ich vermute mal, dass das eine einzeilige, aber vergrößerte Textbox ist und ich mit einen Druck auf Enter den Dialog schließe. Liege ich richtig? Wenn ja, kannst du die Multi-Line-Einstellung aktivieren und die Absätze entsprechend parsen, wenn du die HTML-Dateien erstellst. Nebenbei: Zumindest zwei der drei Ausrufezeichen solltest du entfernen und noch besser wäre es, einen vollständigen Satz zu bilden. Sonst sieht das nicht nur nach unsauber programmiert aus, sondern auch nach unseriös.

      Und ich habe etwas in den Code gespickt:

      VB.NET-Quellcode

      1. If VPfdK = 9 Then
      2. ElseIf VPfdK = 8 Then
      3. ElseIf VPfdK = 7 Then
      4. ElseIf VPfdK = 6 Then
      5. ElseIf VPfdK = 5 Then
      6. ElseIf VPfdK = 4 Then
      7. ElseIf VPfdK = 3 Then
      8. ElseIf VPfdK = 2 Then
      9. ElseIf VPfdK = 1 Then
      10. ElseIf VPfdK = 0 Then
      11. Else
      12. MsgBox("Unbekannter Fehler: 00x5623hrf", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error...")
      13. End If


      Anstelle von den If-ElseIf-Ketten würde sich Select Case anbieten, also

      VB.NET-Quellcode

      1. Select Case VPfdK
      2. case 9
      3. case 8
      4. ...
      5. Case Else
      6. MessageBox.Show("Unbekannter Fehler: 00x5623hrf", "Error...", MessageBoxButtons.OK, MessageBoxIcon.Error)
      7. End Select


      MsgBox() ist noch aus VB6 abwärts. VB.Net verwendet inzwische MessageBox.Show(), siehe auch Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen. Außerdem empfehle ich Option Strict on!

      Wieso Fehler 00x5623hrf? Kannst du mit dieser alphanumerischen Angabe etwas anfangen? Ich nur, wenn ich den Quellcode kenne -> schlecht. Fehlermeldungen sollten etwas beschreiben, z. B. "Fehler beim Erstellen des HTML-Quelltextes." oder "Fehlerhafte Eingabe: Die Widmung darf keinen Absatz beinhalten". Die Fehlernummer kannst du dazupacken, irritiert und verwirrt den Anwender aber nur, weil er nicht weiß, was die Nummer bedeutet. Wenn es keine Fehlerdokumentation gibt ist eine Nummer unnötig!

      Keine Angst: Anfangs habe ich auch viele dieser Fehler gemacht. Aber ich habe daraus gelernt. Ich hoffe, auch du lernst etwas!

      Grüße
      Alle Angaben sind ohne Gewähr, jedoch mit Pistole. Glücksspiel, Drogen und leckeres Essen können süchtig machen.

      43232069737420636f6f6c21
      Verstehe den Sinn nicht.
      Ich brauche noch Calibre zum konvertieren und ich gehe davon aus das es keine Rechtschreibkorrektur gibt.
      Also warum sollte ich nicht einfach Word oder Weiter nehmen und dann durch Calibre jagen?

      Hinzu kommt das gruaelige Design, Deutsch Englisch Mischmasch.

      Offtopic: Deine Website strotzt auch nur so vor Fehlern. Sprachlich wie inhaltlich.
      Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

      fachsimpeln schrieb:

      Quellcode

      1. Try
      2. Dim Aktiv As String = Web.DownloadString("https://www.dropbox.com/s/mto6uhbstu4i911/Aktiv.txt?dl=1")
      3. If Aktiv = "True" Then
      4. MsgBox("Sie verwenden nun die freie Version von E-Book Creator v.3.5.")
      5. Else
      6. MsgBox("Diese freie Lizenz ist leider abgelaufen...", MsgBoxStyle.Critical, "Sorry :( ")
      7. Application.Exit()
      8. End If
      9. Catch ex As Exception
      10. MsgBox("Ihre freie Lizenz kann leider nicht überprüft werden... Bitte stellen Sie eine Internetverbindung her und starten Sie das Programm erneut!", MsgBoxStyle.Exclamation, "Fehler bei der Lizenzüberprüfung...")
      11. Application.Exit()
      12. End Try

      Wirds das wirklich benötigt? Weil das Programm ist so oder so Open-Source und kostenlos.
      Software being "Done" is like lawn being "Mowed". (Jim Benson)
      Hej @fachsimpeln.

      Da glaube ich klar ist, dass das Design fürchterlich ist, gehe ich mal nur auf den Code ein.

      VB.NET-Quellcode

      1. Dim op As New OpenFileDialog
      2. op.Title = "Öffne Cover-Bild"
      3. op.FileName = ""
      4. op.ShowDialog()
      5. TextBox2.Text = op.FileName
      6. PictureBox1.ImageLocation = op.FileName

      Schau dir mal Zeile 5 an. Du versuchst den Text der Textbox in den Namen der gewählten Datei zu ändern und eine Zeile weiter lädst du das Bild in die PictureBox.

      Was machst du aber, wenn gar keine Datei gewählt wurde, weil der Dialog zb. mit "Abbrechen" geschlossen wurde? Wobei das gar nicht mal das Hauptproblem ist, das Problem ist, dass du dir doch gar nicht sicher sein kannst, dass die gewählte Datei auch tatsächlich ein Bild ist.

      So wäre es besser

      VB.NET-Quellcode

      1. Using ofd As New OpenFileDialog()
      2. ofd.Filter = "Bilddateien (*.png; *.jpg; *.jpeg)|*.png; *.jpg; *.jpeg"
      3. ofd.Title = "Cover auswählen"
      4. If ofd.ShowDialog() = DialogResult.OK Then
      5. PictureBox1.ImageLocation = ofd.FileName
      6. End If
      7. End Using

      VB.NET-Quellcode

      1. If TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or RichTextBox1.Text = "" Or RichTextBox2.Text = "" Then
      2. MsgBox("Bitte geben Sie alle Daten an!", MsgBoxStyle.Exclamation, "Warnung!")
      3. Else
      4. Editor.Show()
      5. Me.Hide()
      6. End If

      Auch hier solltest du einiges ändern. Ich empfehle dir zum einen deine Steuerelemente aussagekräftiger zu benennen. Spätestens wenn es mehr werden, verlierst du schnell den Überblick.
      Zum anderen solltest du statt Or lieber OrElse benutzen. Or ist ein bitweiser Operator und nicht geeignet um boolsche Wert miteinander zu vergleichen.
      Des weiteren solltest du dringend von VB6-Methoden wie MsgBox absehen. Nimm lieber MessageBox.Show().

      Dazu auch mal 2 Links:
      Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen
      Böse Funktionen vermeiden

      Und auch Editor.Show() solltest du auf gar keinen Fall verwenden. Sondern:

      VB.NET-Quellcode

      1. Dim edit As New Editor
      2. edit.Show()

      Äußerlich scheinen die beide Aufrufe zwar gleich, tatsächlich aber gibt es einen riesen Unterschied zwischen ihnen.
      Auch hierzu noch ein Link:
      Dialoge: Instanziierung von Forms und Aufruf von Dialogen

      Grüße
      Väinämö