public void LoadSimpleDocFromFile() { RtfTree tree = new RtfTree(); int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf"); //StreamWriter sw = null; //sw = new StreamWriter("testdocs\\result1-1.txt"); //sw.Write(tree.ToString()); //sw.Flush(); //sw.Close(); //sw = new StreamWriter("testdocs\\result1-2.txt"); //sw.Write(tree.ToStringEx()); //sw.Flush(); //sw.Close(); //sw = new StreamWriter("testdocs\\rtf1.txt"); //sw.Write(tree.Rtf); //sw.Flush(); //sw.Close(); //sw = new StreamWriter("testdocs\\text1.txt"); //sw.Write(tree.Text); //sw.Flush(); //sw.Close(); StreamReader sr = null; sr = new StreamReader("..\\..\\testdocs\\result1-1.txt"); string strTree1 = sr.ReadToEnd(); sr.Close(); sr = new StreamReader("..\\..\\testdocs\\result1-2.txt"); string strTree2 = sr.ReadToEnd(); sr.Close(); sr = new StreamReader("..\\..\\testdocs\\rtf1.txt"); string rtf1 = sr.ReadToEnd(); sr.Close(); sr = new StreamReader("..\\..\\testdocs\\text1.txt"); string text1 = sr.ReadToEnd(); sr.Close(); Assert.That(res, Is.EqualTo(0)); Assert.That(tree.MergeSpecialCharacters, Is.False); Assert.That(tree.ToString(), Is.EqualTo(strTree1)); Assert.That(tree.ToStringEx(), Is.EqualTo(strTree2)); Assert.That(tree.Rtf, Is.EqualTo(rtf1)); Assert.That(tree.Text, Is.EqualTo(text1)); }
public static void GenerateRtfTree() { RtfTree tree = new RtfTree(); tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf"); StreamWriter sw = new StreamWriter("..\\..\\testdocs\\rtftree.txt"); Console.WriteLine("Generating RTF tree..."); sw.Write(tree.ToStringEx()); sw.Flush(); sw.Close(); Console.WriteLine("File 'rtftree.txt' created."); Console.WriteLine(""); }
public void LoadSimpleDocMergeSpecialFromString() { RtfTree tree = new RtfTree(); tree.MergeSpecialCharacters = true; StreamReader sr = new StreamReader("..\\..\\testdocs\\testdoc1.rtf"); string strDoc = sr.ReadToEnd(); sr.Close(); int res = tree.LoadRtfText(strDoc); sr = new StreamReader("..\\..\\testdocs\\result1-3.txt"); string strTree1 = sr.ReadToEnd(); sr.Close(); sr = new StreamReader("..\\..\\testdocs\\result1-4.txt"); string strTree2 = sr.ReadToEnd(); sr.Close(); sr = new StreamReader("..\\..\\testdocs\\rtf1.txt"); string rtf1 = sr.ReadToEnd(); sr.Close(); sr = new StreamReader("..\\..\\testdocs\\text1.txt"); string text1 = sr.ReadToEnd(); sr.Close(); Assert.That(res, Is.EqualTo(0)); Assert.That(tree.MergeSpecialCharacters, Is.True); Assert.That(tree.ToString(), Is.EqualTo(strTree1)); Assert.That(tree.ToStringEx(), Is.EqualTo(strTree2)); Assert.That(tree.Rtf, Is.EqualTo(rtf1)); Assert.That(tree.Text, Is.EqualTo(text1)); }
private void button1_Click(object sender, System.EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); //Se establecen las propiedades del cuadro de diálogo "Abrir" openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "Archivos RTF (*.rtf)|*.rtf|Todos los archivos (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; //Se muestra el cuadro de diálogo Abrir y se espera a que se seleccione un fichero RTF. if (openFileDialog1.ShowDialog() == DialogResult.OK) { //Se crea el árbol RTF. RtfTree arbol = new RtfTree(); //Se carga el documento seleccionado. arbol.LoadRtfFile(openFileDialog1.FileName); //Se muestra el árbol RTF extendido en el cuadro de texto superior de la ventana. txtArbol.Text = arbol.ToStringEx(); } }
/// <summary> /// Convierte una cadena de código RTF a formato HTML /// </summary> public string Convert(string rtf) { //Console.WriteLine(rtf); //Generar arbol DOM RtfTree rtfTree = new RtfTree(); rtfTree.LoadRtfText(rtf); Console.WriteLine(rtfTree.ToStringEx()); //Inicializar variables empleadas _builder = new StringBuilder(); _htmlFormat = new Format(); this._builder.Append("<!DOCTYPE html><html><body> "); _formatList = new List <Format>(); _formatList.Add(new Format()); try { _fontTable = rtfTree.GetFontTable(); } catch { } try { _colorTable = rtfTree.GetColorTable(); } catch { } int inicio; for (inicio = 0; inicio < rtfTree.RootNode.FirstChild.ChildNodes.Count; inicio++) { if (rtfTree.RootNode.FirstChild.ChildNodes[inicio].NodeKey == "pard") { break; } } //Procesar todos los nodos visibles TransformChildNodes(rtfTree.RootNode.FirstChild.ChildNodes, inicio); ProcessChildNodes(rtfTree.RootNode.FirstChild.ChildNodes, inicio); //Cerrar etiquetas pendientes _formatList.Last().Reset(); WriteText(string.Empty); Regex repairList = new Regex("<span [^>]*>·</span><span style=\"([^\"]*)\">(.*?)<br\\s+/><" + "/span>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.CultureInvariant); //foreach (Match match in repairList.Matches(_builder.ToString())) //{ // _builder.Replace(match.Value, string.Format("<li style=\"{0}\">{1}</li>", match.Groups[1].Value, match.Groups[2].Value)); //} //Regex repairUl = new Regex("(?<!</li>)<li", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); //foreach (Match match in repairUl.Matches(_builder.ToString())) //{ // _builder.Insert(match.Index, "<ul>"); //} //repairUl = new Regex("/li>(?!<li)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); //foreach (Match match in repairUl.Matches(_builder.ToString())) //{ // _builder.Insert(match.Index + match.Length, "</ul>"); //} if (AutoParagraph) { string[] partes = _builder.ToString().Split(new[] { "<br /><br />" }, StringSplitOptions.RemoveEmptyEntries); _builder = new StringBuilder(_builder.Length + 7 * partes.Length); foreach (string parte in partes) { _builder.Append("<p>"); _builder.Append(parte); _builder.Append("</p>"); } } this._builder.Append("</body></html>"); //Console.WriteLine(_builder.ToString()); return(EscapeHtmlEntities ? HtmlEntities.Encode(_builder.ToString()) : _builder.ToString()); }