Hallo Leute,
als ich dachte ich wäre fertig und es würde alles funktionieren, hat mir Windows 10 wieder einen Strich durch die Rechnung gemacht.
Ich muss ein RTF in HTML umwandeln. Dazu gibt es viele verschiedene Codeschnippsel im Internet, wovon mir die mit MS Word am besten gefiel, weil "eigentlich" alles klappte.
Hier die beiden Code-Varianten die grundsätzlich funktionieren.
Die erste Variante habe ich zuerst integriert, zum Probieren auch noch die zweite weiter unten.
Beide Varianten funktionieren unter Windows 7 und Windows 8 mit Word 2007 einwandfrei.
Nachdem die Funktion fertig ausgeführt wurde, ist Winword nicht mehr im Tastkmanager auffindbar - wurde also rasch beendet und entladen.
Bei folgenden Rechner/Word Kombinationen entlädt sich WORD nicht sofort, sondern erst nach 10-15 Sekunden und blockiert solange den Bildschirmaufbau der eigenen Anwendung.
* Windows 10 mit Word 2016
* Windows 10 mit Word 365
Als Verweis eingebunden wurde
Falls Ihr eine Idee habt warum das so ist und wie ich dieses Blockieren verhindern kann, dann wäre das super.
Oder noch besser:
Wenn Ihr eine Alternative (gerne auch kostenpflichtige) Komponeten für RTF to HTML kennt oder schon benutzt habt, dann wäre ich Euch für einen Hinweis darauf sehr verbunden.
Eine externe, von Word unabhängige Komponente, wäre ohnehin besser. Denn alle User ohne MS Word können obigen Code nicht nutzen.
als ich dachte ich wäre fertig und es würde alles funktionieren, hat mir Windows 10 wieder einen Strich durch die Rechnung gemacht.
Ich muss ein RTF in HTML umwandeln. Dazu gibt es viele verschiedene Codeschnippsel im Internet, wovon mir die mit MS Word am besten gefiel, weil "eigentlich" alles klappte.
Hier die beiden Code-Varianten die grundsätzlich funktionieren.
Die erste Variante habe ich zuerst integriert, zum Probieren auch noch die zweite weiter unten.
VB.NET-Quellcode
- ''' <summary>
- ''' Erste Variante mit Clipboard übergabe
- ''' </summary>
- ''' <param name="sRTF"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Function sRTF_To_HTML(ByVal sRTF As String) As String
- Dim MyWord As Word.Application
- Dim oDoNotSaveChanges As Object = Word.WdSaveOptions.wdDoNotSaveChanges
- Dim sReturnString As String = ""
- Dim sConvertedString As String = ""
- MyWord = CType(CreateObject("Word.Application"), Word.Application) 'CreateObject("Word.application")
- Try
- MyWord.Visible = False
- MyWord.Documents.Add()
- Dim doRTF As New System.Windows.Forms.DataObject
- doRTF.SetData("Rich Text Format", sRTF)
- Clipboard.SetDataObject(doRTF)
- MyWord.Windows(1).Selection.Paste()
- MyWord.Windows(1).Selection.WholeStory()
- MyWord.Windows(1).Selection.Copy()
- sConvertedString = Clipboard.GetData(System.Windows.Forms.DataFormats.Html).ToString
- sConvertedString = sConvertedString.Substring(sConvertedString.IndexOf("<html"))
- sConvertedString = sConvertedString.Replace("Â", "")
- sReturnString = sConvertedString
- If Not MyWord Is Nothing Then
- MyWord.Quit(oDoNotSaveChanges)
- MyWord = Nothing
- End If
- Catch ex As Exception
- If Not MyWord Is Nothing Then
- MyWord.Quit(oDoNotSaveChanges)
- MyWord = Nothing
- End If
- MsgBox("Error converting Rich Text to HTML")
- End Try
- Return sReturnString
- End Function
VB.NET-Quellcode
- ''' <summary>
- ''' Zweite Variante mit Datei speichern
- ''' </summary>
- ''' <param name="r"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Function ConvertRTFToHTML(r As RichTextBox) As String
- Dim RTFDatei As String = Path.Combine(BONitERP2_LokalerOrdner, "temp.rtf")
- Dim HTMDatei As Object = Path.Combine(BONitERP2_LokalerOrdner, "temp.htm")
- r.SaveFile(RTFDatei)
- Dim w As Word.Application
- w = New Word.Application
- Dim d As Word.Document
- d = w.Documents.Open(FileName:="" + RTFDatei + "", ConfirmConversions:=False)
- d.SaveAs(HTMDatei, Word.WdSaveFormat.wdFormatHTML)
- 'Würde das Dokument als PDF speichern
- 'd.ExportAsFixedFormat("c:\test.pdf", Word.WdExportFormat.wdExportFormatPDF, True, Word.WdExportOptimizeFor.wdExportOptimizeForPrint, Word.WdExportRange.wdExportAllDocument)
- d.Close()
- w.Quit()
- Return "" 'wird vorerst noch nix zurückgegeben, weil die Funktion erst mit Word unter Windows 10 funktionieren muss
- End Function
Beide Varianten funktionieren unter Windows 7 und Windows 8 mit Word 2007 einwandfrei.
Nachdem die Funktion fertig ausgeführt wurde, ist Winword nicht mehr im Tastkmanager auffindbar - wurde also rasch beendet und entladen.
Bei folgenden Rechner/Word Kombinationen entlädt sich WORD nicht sofort, sondern erst nach 10-15 Sekunden und blockiert solange den Bildschirmaufbau der eigenen Anwendung.
* Windows 10 mit Word 2016
* Windows 10 mit Word 365
Als Verweis eingebunden wurde
Microsoft.Word 12.0 Object Library
Falls Ihr eine Idee habt warum das so ist und wie ich dieses Blockieren verhindern kann, dann wäre das super.
Oder noch besser:
Wenn Ihr eine Alternative (gerne auch kostenpflichtige) Komponeten für RTF to HTML kennt oder schon benutzt habt, dann wäre ich Euch für einen Hinweis darauf sehr verbunden.
Eine externe, von Word unabhängige Komponente, wäre ohnehin besser. Denn alle User ohne MS Word können obigen Code nicht nutzen.
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
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at