Пример #1
0
        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));
        }
Пример #2
0
            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("");
            }
Пример #3
0
        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));
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
            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("");
            }
Пример #6
0
        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));
        }
Пример #7
0
        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));
        }
Пример #8
0
        /// <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());
        }