2014-11-26 3 views
0

Я пытаюсь объединить несколько rtf-документов в один. размер слияния увеличивается (размер всех документов), но когда я открываю, я могу видеть только первое содержимое файла RTF.Как слить несколько файлов RTF в один RTF в C#

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); 


      } 
+0

Сомневаюсь, что вы можете просто объединить файлы, подобные этому. Вам нужно будет понять и объединить контент в какой-то степени, даже если он просто перемещает содержимое из второго файла в самые внешние фигурные скобки первого. Есть, вероятно, библиотеки, которые упростят это для вас. – Rup

ответ

0

Файлы RTF не являются текстовыми. Вы не можете объединить текст, поскольку в нем есть заголовки и другие структуры. Здесь вы можете прочитать все об этой спецификации http://support.microsoft.com/kb/86999 (yuck). Вы можете использовать объект TextRange, если вы используете wpf, загрузите в него первый файл, затем добавьте содержимое каждого дополнительного файла. Или вы можете читать файлы в объекты richtextbox в winforms и добавлять содержимое (как загрузить: http://msdn.microsoft.com/en-us/library/1z7hy77a.aspx). Я думаю, вы могли бы использовать TextBox1.Rtf = TextBox1.Rtf + textBox2.rtf, пока все не будут загружены, так как свойство rtf является строкой с кодировкой rtf.

+0

Собственно, проигнорируйте это, это дубликат: http://stackoverflow.com/questions/628553/merge-rtf-files – Kell

+0

TextBox1.Rtf = TextBox1.Rtf + textBox2.rtf не работает, но TextBox1.Text = TextBox1. Текст + TextBox2.Text отображает второй rtf –

+0

Прохладный, кажется, что у вас есть решение. – Kell