Gewusst wie: Konvertieren vom RTF- ins Nur-Text-Format (C#-Programmierhandbuch)

Rich Text Format (RTF) ist ein Dokumentformat, das von Microsoft in den späten 1980ern entwickelt wurde, um den Austausch von Dokumenten zwischen Betriebssystemen zu ermöglichen. Sowohl Microsoft Word als auch WordPad können RTF-Dokumente lesen und schreiben. In .NET Framework können Sie mit dem Steuerelement <xref:System.Windows.Forms.RichTextBox> ein Textverarbeitungsprogramm erstellen, das RTF unterstützt und einem Benutzer die Formatierung von Text in WYSIWIG ermöglicht.

Sie können auch das Steuerelement <xref:System.Windows.Forms.RichTextBox> verwenden, um die RTF-Formatierungscodes aus einem Dokument programmgesteuert zu entfernen und es in reinen Text umzuwandeln. Sie müssen das Steuerelement nicht in Windows Form einbetten, um diesen Vorgang durchzuführen.

Verwenden des Steuerelements „RichTextBox“ in einem Projekt

  1. Fügen Sie einen Verweis auf „System.Windows.Forms.dll“ hinzu.

  2. Fügen Sie eine using-Anweisung für den Namespace System.Windows.Forms hinzu (optional).

Beispiel

Im folgenden Beispiel wird eine Beispiel-RTF-Datei in reinen Text konvertiert. Die Datei enthält RTF-Formatierungen (wie Schriftartinformationen), vier Unicode-Zeichen und vier erweiterte ASCII-Zeichen. Der Beispielcode öffnet die Datei, übergibt dessen Inhalt als RTF an <xref:System.Windows.Forms.RichTextBox>, ruft den Inhalt als Text ab, zeigt den Text in einer <xref:System.Windows.Forms.MessageBox> an und gibt den Text im UTF-8-Format in eine Datei aus.

Die MessageBox und die Ausgabedatei enthalten den folgenden Text:

The Greek word for "psyche" is spelled ψυχή. The Greek letters are encoded in Unicode.  
These characters are from the extended ASCII character set (Windows code page 1252):  âäӑå  
// Use NotePad to save the following RTF code to a text file in the same folder as  
// your .exe file for this project. Name the file test.rtf. 
/*
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}
{\f1\fnil\fprq1\fcharset0 Courier New;}{\f2\fswiss\fprq2\fcharset0 Arial;}}
{\colortbl ;\red0\green128\blue0;\red0\green0\blue0;}
{\*\generator Msftedit 5.41.21.2508;}
\viewkind4\uc1\pard\f0\fs20 The \i Greek \i0 word for "psyche" is spelled \cf1\f1\u968?\u965?\u967?\u942?\cf2\f2 . The Greek letters are encoded in Unicode.\par
These characters are from the extended \b ASCII \b0 character set (Windows code page 1252):  \'e2\'e4\u1233?\'e5\cf0\par }
*/
class ConvertFromRTF
{
    static void Main()
    {
        // If your RTF file isn't in the same folder as the .exe file for the project, 
        // specify the path to the file in the following assignment statement. 
        string path = @"test.rtf";

        //Create the RichTextBox. (Requires a reference to System.Windows.Forms.)
        System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();

        // Get the contents of the RTF file. When the contents of the file are  
        // stored in the string (rtfText), the contents are encoded as UTF-16. 
        string rtfText = System.IO.File.ReadAllText(path);

        // Display the RTF text. This should look like the contents of your file.
        System.Windows.Forms.MessageBox.Show(rtfText);

        // Use the RichTextBox to convert the RTF code to plain text.
        rtBox.Rtf = rtfText;
        string plainText = rtBox.Text;

        // Display the plain text in a MessageBox because the console can't  
        // display the Greek letters. You should see the following result: 
        //   The Greek word for "psyche" is spelled ψυχή. The Greek letters are
        //   encoded in Unicode.
        //   These characters are from the extended ASCII character set (Windows
        //   code page 1252): âäӑå
        System.Windows.Forms.MessageBox.Show(plainText);

        // Output the plain text to a file, encoded as UTF-8. 
        System.IO.File.WriteAllText(@"output.txt", plainText);
    }
}

RTF-Zeichen werden in acht Bits codiert. Allerdings können Benutzer Unicode-Zeichen zusätzlich zu erweiterten ASCII-Zeichen aus angegebenen Codeseiten angeben. Da die Eigenschaft <xref:System.Windows.Forms.RichTextBox.Text%2A?displayProperty=fullName> vom Typ Zeichenfolge ist, werden die Zeichen als Unicode UTF-16 codiert. Alle erweiterten ASCII- und Unicode-Zeichen aus dem RTF-Quelldokument werden in der Textausgabe ordnungsgemäß codiert.

Falls Sie die Methode <xref:System.IO.File.WriteAllText%2A?displayProperty=fullName> zum Schreiben von Text auf die Festplatte verwenden, wird der Text als UTF-8 (ohne Bytereihenfolge-Marke) codiert.

Siehe auch

<xref:System.Windows.Forms.RichTextBox?displayProperty=fullName>
Zeichenfolgen