如何在 C# 中将多个 RTF 文件合并为一个 RTF

本文关键字:RTF 合并 一个 文件 | 更新日期: 2023-09-27 18:32:15

我正在尝试将多个 rtf 文档合并为一个。 合并的大小增加(所有文档的大小),但是当我打开时,我只能看到第一个RTF文件内容。

string srcpath = @"C:'CSI'RTFtest'src'";
        string despath = @"C:'CSI'RTFtest'dest'single.rtf";
        string content = "";
        List<string> files = new List<string>(Directory.GetFiles(srcpath, "*.rtf"));
        StreamReader read;
        if (files.Count > 1)
        {
            for (int i = 0; i < files.Count; i++)
            {
                String filename = files[i];
                content = File.ReadAllText(filename);                    
                //content = content + read.ReadToEnd();
                File.AppendAllText(despath, content.ToString());
                File.AppendAllText(despath, System.Environment.NewLine);

            }

如何在 C# 中将多个 RTF 文件合并为一个 RTF

RTF 文件不是文本文件。您不能只连接文本,因为涉及标题和其他结构。你可以在这里阅读有关此规范的所有信息 http://support.microsoft.com/kb/86999 (yuck)。如果您使用的是 wpf,则可以使用 TextRange 对象,将第一个文件加载到其中,然后追加每个附加文件的内容。或者,您可以将文件读取到 winForms 中的富文本框对象中并附加内容(如何加载:http://msdn.microsoft.com/en-us/library/1z7hy77a.aspx)。我想你可以使用 TextBox1.Rtf = TextBox1.Rtf + textBox2.rtf直到全部加载,因为 rtf 属性是带有 rtf 编码的字符串。

使用 StringBuilder .您可以将 RTF 附加到 RTF。

例:

StringBuilder sb = new StringBuilder();
sb.Append(@"{'rtf1'ansi");
sb.Append(@"...
HPIrichTextBox.Rtf = sb.ToString();