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

时间:2014-11-26 11:09:39

标签: c# rtf

我试图将多个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);


            }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

示例:

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