Пример #1
0
        public void LoadImageDocFromFile()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            //StreamWriter sw = null;
            //sw = new StreamWriter("testdocs\\rtf5.txt");
            //sw.Write(tree.Rtf);
            //sw.Flush();
            //sw.Close();

            StreamReader sr = null;

            sr = new StreamReader("..\\..\\testdocs\\rtf5.txt");
            string rtf5 = sr.ReadToEnd();

            sr.Close();

            sr = new StreamReader("..\\..\\testdocs\\text2.txt");
            string text2 = sr.ReadToEnd();

            sr.Close();

            Assert.That(res, Is.EqualTo(0));
            Assert.That(tree.MergeSpecialCharacters, Is.False);
            Assert.That(tree.Rtf, Is.EqualTo(rtf5));
            Assert.That(tree.Text, Is.EqualTo(text2));
        }
Пример #2
0
        public void SelectChildNodesByType()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection lista1 = tree.MainGroup.SelectChildNodes(RtfNodeType.Keyword);  //48 nodes
            RtfNodeCollection lista2 = tree.MainGroup.SelectChildNodes(RtfNodeType.Control);  //3 nodes
            RtfNodeCollection lista3 = tree.MainGroup.SelectChildNodes(RtfNodeType.Group);    //3 nodes

            Assert.That(lista1.Count, Is.EqualTo(49));
            Assert.That(lista2.Count, Is.EqualTo(3));
            Assert.That(lista3.Count, Is.EqualTo(3));

            Assert.That(lista1[5], Is.SameAs(tree.MainGroup[8]));  //viewkind
            Assert.That(lista1[22].NodeKey, Is.EqualTo("lang"));   //lang3082

            Assert.That(lista2[0], Is.SameAs(tree.MainGroup[45])); //'233
            Assert.That(lista2[1], Is.SameAs(tree.MainGroup[47])); //'241
            Assert.That(lista2[1].Parameter, Is.EqualTo(241));     //'241

            Assert.That(lista3[0], Is.SameAs(tree.MainGroup[5]));
            Assert.That(lista3[0].FirstChild.NodeKey, Is.EqualTo("fonttbl"));
            Assert.That(lista3[1], Is.SameAs(tree.MainGroup[6]));
            Assert.That(lista3[1].FirstChild.NodeKey, Is.EqualTo("colortbl"));
            Assert.That(lista3[2], Is.SameAs(tree.MainGroup[7]));
            Assert.That(lista3[2].ChildNodes[0].NodeKey, Is.EqualTo("*"));
            Assert.That(lista3[2].ChildNodes[1].NodeKey, Is.EqualTo("generator"));
        }
Пример #3
0
        public void SelectSiblings()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.ChildNodes[4];               //deflang3082
            RtfTreeNode node2 = tree.MainGroup.ChildNodes[6].ChildNodes[2]; //colortbl/red

            RtfTreeNode n1 = node1.SelectSibling(RtfNodeType.Group);
            RtfTreeNode n2 = node1.SelectSibling("viewkind");
            RtfTreeNode n3 = node1.SelectSibling("fs", 28);

            RtfTreeNode n4 = node2.SelectSibling(RtfNodeType.Keyword);
            RtfTreeNode n5 = node2.SelectSibling("blue");
            RtfTreeNode n6 = node2.SelectSibling("red", 255);

            Assert.That(n1, Is.SameAs(tree.MainGroup[5]));
            Assert.That(n2, Is.SameAs(tree.MainGroup[8]));
            Assert.That(n3, Is.SameAs(tree.MainGroup[17]));

            Assert.That(n4, Is.SameAs(tree.MainGroup[6].ChildNodes[3]));
            Assert.That(n5, Is.SameAs(tree.MainGroup[6].ChildNodes[4]));
            Assert.That(n6, Is.SameAs(tree.MainGroup[6].ChildNodes[6]));
        }
Пример #4
0
        public void ResultNode()
        {
            RtfTree tree = new RtfTree();

            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode node = tree.MainGroup.SelectSingleNode("object").ParentNode;

            ObjectNode objNode = new ObjectNode(node);

            RtfTreeNode resNode = objNode.ResultNode;

            Assert.That(resNode, Is.SameAs(tree.MainGroup.SelectSingleGroup("object").SelectSingleChildGroup("result")));

            RtfTreeNode pictNode = resNode.SelectSingleNode("pict").ParentNode;
            ImageNode   imgNode  = new ImageNode(pictNode);

            Assert.That(imgNode.Height, Is.EqualTo(2247));
            Assert.That(imgNode.Width, Is.EqualTo(9320));

            Assert.That(imgNode.DesiredHeight, Is.EqualTo(1274));
            Assert.That(imgNode.DesiredWidth, Is.EqualTo(5284));

            Assert.That(imgNode.ScaleX, Is.EqualTo(100));
            Assert.That(imgNode.ScaleY, Is.EqualTo(100));

            Assert.That(imgNode.ImageFormat, Is.EqualTo(ImageFormat.Emf));
        }
Пример #5
0
            private static void ExtractHyperlinks()
            {
                RtfTree tree = new RtfTree();

                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                RtfNodeCollection fields = tree.MainGroup.SelectGroups("field");

                foreach (RtfTreeNode node in fields)
                {
                    //Extract URL

                    RtfTreeNode fldInst = node.ChildNodes[1];

                    string fldInstText = ExtractGroupText(fldInst);

                    string url = fldInstText.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[1];

                    //Extract Link Text

                    RtfTreeNode fldRslt = node.SelectSingleChildGroup("fldrslt");

                    string linkText = ExtractGroupText(fldRslt);

                    Console.WriteLine("[" + linkText + ", " + url + "]");
                }
            }
Пример #6
0
        public void TextExtraction()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc4.rtf");

            RtfTreeNode simpleGroup  = tree.MainGroup.SelectSingleGroup("ul");
            RtfTreeNode nestedGroups = tree.MainGroup.SelectSingleGroup("cf");
            RtfTreeNode keyword      = tree.MainGroup.SelectSingleChildNode("b");
            RtfTreeNode control      = tree.MainGroup.SelectSingleChildNode("'");
            RtfTreeNode root         = tree.RootNode;

            Assert.That(simpleGroup.Text, Is.EqualTo("underline1"));
            Assert.That(nestedGroups.Text, Is.EqualTo("blue1 luctus. Fusce in interdum ipsum. Cum sociis natoque penatibus et italic1 dis parturient montes, nascetur ridiculus mus."));
            Assert.That(keyword.Text, Is.EqualTo(""));
            Assert.That(control.Text, Is.EqualTo("é"));
            Assert.That(root.Text, Is.EqualTo(""));

            Assert.That(simpleGroup.RawText, Is.EqualTo("underline1"));
            Assert.That(nestedGroups.RawText, Is.EqualTo("blue1 luctus. Fusce in interdum ipsum. Cum sociis natoque penatibus et italic1 dis parturient montes, nascetur ridiculus mus."));
            Assert.That(keyword.RawText, Is.EqualTo(""));
            Assert.That(control.RawText, Is.EqualTo("é"));
            Assert.That(root.RawText, Is.EqualTo(""));

            RtfTreeNode fontsGroup     = tree.MainGroup.SelectSingleGroup("fonttbl");
            RtfTreeNode generatorGroup = tree.MainGroup.SelectSingleGroup("*");

            Assert.That(fontsGroup.Text, Is.EqualTo(""));
            Assert.That(generatorGroup.Text, Is.EqualTo(""));

            Assert.That(fontsGroup.RawText, Is.EqualTo("Times New Roman;Arial;Arial;"));
            Assert.That(generatorGroup.RawText, Is.EqualTo("Msftedit 5.41.15.1515;"));
        }
Пример #7
0
        public void LoadImageDocFromFile()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            //StreamWriter sw = null;
            //sw = new StreamWriter("testdocs\\rtf5.txt");
            //sw.Write(tree.Rtf);
            //sw.Flush();
            //sw.Close();

            StreamReader sr = null;

            sr = new StreamReader("..\\..\\testdocs\\rtf5.txt");
            string rtf5 = sr.ReadToEnd();
            sr.Close();

            sr = new StreamReader("..\\..\\testdocs\\text2.txt");
            string text2 = sr.ReadToEnd();
            sr.Close();

            Assert.That(res, Is.EqualTo(0));
            Assert.That(tree.MergeSpecialCharacters, Is.False);
            Assert.That(tree.Rtf, Is.EqualTo(rtf5));
            Assert.That(tree.Text, Is.EqualTo(text2));
        }
Пример #8
0
        private void button2_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 código RTF del documento en el cuadro de texto superior.
                txtArbol.Text = arbol.Rtf;

                //Se muestra el RTF ya renderizado en el cuadro de texto enriquecido inferior de la ventana.
                rtxtTexto.Rtf = arbol.Rtf;
            }
        }
Пример #9
0
        public void SelectNodesByKeyword()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection lista1 = tree.MainGroup.SelectNodes("fs");  //5 nodes
            RtfNodeCollection lista2 = tree.MainGroup.SelectNodes("f");   //6 nodes

            Assert.That(lista1.Count, Is.EqualTo(5));
            Assert.That(lista2.Count, Is.EqualTo(6));

            Assert.That(lista1[0], Is.SameAs(tree.MainGroup[17]));
            Assert.That(lista1[1], Is.SameAs(tree.MainGroup[22]));
            Assert.That(lista1[2], Is.SameAs(tree.MainGroup[25]));
            Assert.That(lista1[3], Is.SameAs(tree.MainGroup[43]));
            Assert.That(lista1[4], Is.SameAs(tree.MainGroup[77]));

            Assert.That(lista2[0], Is.SameAs(tree.MainGroup[5].ChildNodes[1].FirstChild));
            Assert.That(lista2[1], Is.SameAs(tree.MainGroup[5].ChildNodes[2].FirstChild));
            Assert.That(lista2[2], Is.SameAs(tree.MainGroup[5].ChildNodes[3].FirstChild));
            Assert.That(lista2[3], Is.SameAs(tree.MainGroup[16]));
            Assert.That(lista2[4], Is.SameAs(tree.MainGroup[56]));
            Assert.That(lista2[5], Is.SameAs(tree.MainGroup[76]));
        }
Пример #10
0
        public void SelectNodesByType()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection lista1 = tree.MainGroup.SelectNodes(RtfNodeType.Keyword);  //68 nodes
            RtfNodeCollection lista2 = tree.MainGroup.SelectNodes(RtfNodeType.Control);  //4 nodes
            RtfNodeCollection lista3 = tree.MainGroup.SelectNodes(RtfNodeType.Group);    //6 nodes

            Assert.That(lista1.Count, Is.EqualTo(69));
            Assert.That(lista2.Count, Is.EqualTo(4));
            Assert.That(lista3.Count, Is.EqualTo(6));

            Assert.That(lista1[5], Is.SameAs(tree.MainGroup[5].FirstChild));     //fonttbl
            Assert.That(lista1[22], Is.SameAs(tree.MainGroup[6].ChildNodes[7])); //green0
            Assert.That(lista1[22].NodeKey, Is.EqualTo("green"));                //green0

            Assert.That(lista2[0], Is.SameAs(tree.MainGroup[7].FirstChild));     //* generator
            Assert.That(lista2[1], Is.SameAs(tree.MainGroup[45]));               //'233
            Assert.That(lista2[2], Is.SameAs(tree.MainGroup[47]));               //'241
            Assert.That(lista2[2].Parameter, Is.EqualTo(241));                   //'241

            Assert.That(lista3[0], Is.SameAs(tree.MainGroup[5]));
            Assert.That(lista3[0].FirstChild.NodeKey, Is.EqualTo("fonttbl"));
            Assert.That(lista3[3], Is.SameAs(tree.MainGroup[5].ChildNodes[3]));
            Assert.That(lista3[3].FirstChild.NodeKey, Is.EqualTo("f"));
            Assert.That(lista3[3].FirstChild.Parameter, Is.EqualTo(2));
            Assert.That(lista3[5], Is.SameAs(tree.MainGroup[7]));
            Assert.That(lista3[5].ChildNodes[0].NodeKey, Is.EqualTo("*"));
            Assert.That(lista3[5].ChildNodes[1].NodeKey, Is.EqualTo("generator"));
        }
Пример #11
0
            private static void ExtractImages()
            {
                RtfTree tree = new RtfTree();

                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                RtfNodeCollection imageNodes = tree.RootNode.SelectNodes("pict");

                Console.WriteLine("Extracting images...");

                int i = 1;

                foreach (RtfTreeNode node in imageNodes)
                {
                    ImageNode imageNode = new ImageNode(node.ParentNode);

                    if (imageNode.ImageFormat == ImageFormat.Png)
                    {
                        imageNode.SaveImage("..\\..\\testdocs\\image" + i + ".png");

                        Console.WriteLine("File '" + "image" + i + ".png" + "' created.");

                        i++;
                    }
                }

                Console.WriteLine("");
            }
Пример #12
0
        private EstadoRtf estadoActual;                 //Estado flujo RTF actual

        #endregion

        #region Constructores

        public TraductorRtf(string rutaRTF)
        {
            estados = new ArrayList();

            tree = new RtfTree();

            tree.LoadRtfFile(rutaRTF);
        }
Пример #13
0
        public void TextExtractionUnicode()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\unicodedoc.rtf");

            Assert.That(tree.Text, Is.EqualTo("Prueba Unicode: Вова Петя\r\nSin ignorar caracteres: Вова Петя\r\n"));
        }
Пример #14
0
        private void button6_Click(object sender, 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 un árbol RTF
                RtfTree arbol = new RtfTree();

                //Se carga el documento seleccionado (Este método parsea el documento y crea la estructura de árbol interna)
                arbol.LoadRtfFile(openFileDialog1.FileName);

                //Busca el primer nodo de tipo objeto.
                RtfTreeNode node = arbol.RootNode.SelectSingleNode("object");

                //Se crea un nodo RTF especializado en imágenes
                ObjectNode objectNode = new ObjectNode(node.ParentNode);

                //Se escriben al cuadro de texto superior algunos datos del objeto
                txtArbol.Text += "Object type: " + objectNode.ObjectType + "\r\n";
                txtArbol.Text += "Object class: " + objectNode.ObjectClass + "\r\n";

                //Se extrae la imagen insertada como representación del objeto

                //Se obtiene el nodo "\result" del objeto (representación externa del objeto en el documento RTF)
                RtfTreeNode resultNode = objectNode.ResultNode;

                RtfTreeNode auxNode = null;

                //Si existe un nodo imagen en el grupo "\result" la extraemos a un fichero y mostramos algunas características en
                //el cuadro de texto superior de la ventana.
                if ((auxNode = resultNode.SelectSingleNode("pict")) != null)
                {
                    //Creamos el nodo especializado de tipo Imagen
                    ImageNode imageNode = new ImageNode(auxNode.ParentNode);

                    //Mostramos algunas características de la imagen
                    txtArbol.Text += "Image width: " + imageNode.Width / 20 + "\r\n";
                    txtArbol.Text += "Image heigh: " + imageNode.Height / 20 + "\r\n";
                    txtArbol.Text += "Image format: " + imageNode.ImageFormat + "\r\n";

                    //Se guarda la imagen a fichero
                    MessageBox.Show("Se va a crear el fichero: image-example3." + getExtension(imageNode.ImageFormat));
                    imageNode.SaveImage("image-example3." + getExtension(imageNode.ImageFormat));
                }
                else
                {
                    MessageBox.Show("El grupo '\result' del objeto no contiene imágenes!");
                }
            }
        }
Пример #15
0
            /// <summary>
            /// Constructor de la clase RtfMerger.
            /// </summary>
            /// <param name="templatePath">Ruta del documento plantilla.</param>
            public RtfMerger(string templatePath)
            {
                //Se carga el documento origen
                baseRtfDoc = new RtfTree();
                baseRtfDoc.LoadRtfFile(templatePath);

                //Se crea la lista de parámetros de sustitución (placeholders)
                placeHolder = new Dictionary <string, RtfTree>();
            }
Пример #16
0
            /// <summary>
            /// Constructor de la clase RtfMerger. 
            /// </summary>
            /// <param name="templatePath">Ruta del documento plantilla.</param>
            public RtfMerger(string templatePath)
            {
                //Se carga el documento origen
                baseRtfDoc = new RtfTree();
                baseRtfDoc.LoadRtfFile(templatePath);

                //Se crea la lista de parámetros de sustitución (placeholders)
                placeHolder = new Dictionary<string, RtfTree>();
            }
Пример #17
0
        public static void LoadTree()
        {
            RtfTree tree = new RtfTree();

            //Load and parse RTF document
            tree.LoadRtfFile(@"D:\rtfdoc.rtf");

            tree.SaveRtf("path");
        }
Пример #18
0
            public static void ExtractDocumentOutline()
            {
                RtfTree tree = new RtfTree();

                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                RtfStyleSheetTable sst = tree.GetStyleSheetTable();

                int heading1 = sst.IndexOf("heading 1");
                int heading2 = sst.IndexOf("heading 2");
                int heading3 = sst.IndexOf("heading 3");

                tree.MainGroup.RemoveChild(tree.MainGroup.SelectChildGroups("stylesheet")[0]);

                RtfNodeCollection headingKeywords = tree.MainGroup.SelectNodes("s");

                for (int i = 0; i < headingKeywords.Count; i++)
                {
                    RtfTreeNode hk = headingKeywords[i];

                    StringBuilder text = new StringBuilder("");

                    if (hk.Parameter == heading1 ||
                        hk.Parameter == heading2 ||
                        hk.Parameter == heading3)
                    {
                        RtfTreeNode sibling = hk.NextSibling;

                        while (sibling != null && !sibling.NodeKey.Equals("pard"))
                        {
                            if (sibling.NodeType == RtfNodeType.Text)
                            {
                                text.Append(sibling.NodeKey);
                            }
                            else if (sibling.NodeType == RtfNodeType.Group)
                            {
                                text.Append(ExtractGroupText(sibling));
                            }

                            sibling = sibling.NextSibling;
                        }

                        if (hk.Parameter == heading1)
                        {
                            Console.WriteLine("H1: {0}", text);
                        }
                        else if (hk.Parameter == heading2)
                        {
                            Console.WriteLine("    H2: {0}", text);
                        }
                        else if (hk.Parameter == heading3)
                        {
                            Console.WriteLine("        H3: {0}", text);
                        }
                    }
                }
            }
Пример #19
0
        public void ParseSimpleRtfText()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfPullParser parser = new RtfPullParser();
            parser.LoadRtfText(tree.Rtf);

            parserTests(parser);
        }
Пример #20
0
        public void TextExtractionSpecial()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc5.rtf");

            Assert.That(tree.Text, Is.EqualTo("Esto es una ‘prueba’\r\n\t y otra “prueba” y otra—prueba." + Environment.NewLine));
            Assert.That(tree.MainGroup.Text, Is.EqualTo("Esto es una ‘prueba’\r\n\t y otra “prueba” y otra—prueba." + Environment.NewLine));
            Assert.That(tree.MainGroup.RawText, Is.EqualTo("Arial;Msftedit 5.41.15.1515;Esto es una ‘prueba’\r\n\t y otra “prueba” y otra—prueba." + Environment.NewLine));
        }
Пример #21
0
            /// <summary>
            /// Asocia un nuevo parámetro de sustitución (placeholder) con la ruta del documento a insertar.
            /// </summary>
            /// <param name="ph">Nombre del placeholder.</param>
            /// <param name="path">Ruta del documento a insertar.</param>
            public void AddPlaceHolder(string ph, string path)
            {
                RtfTree tree = new RtfTree();

                int res = tree.LoadRtfFile(path);

                if (res == 0)
                {
                    placeHolder.Add(ph, tree);
                }
            }
Пример #22
0
        public void SelectSingleChildNodeByKeywordAndParam()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleChildNode("fs", 24);
            RtfTreeNode node2 = tree.MainGroup.SelectSingleChildNode("f", 1);

            Assert.That(node1, Is.SameAs(tree.MainGroup[22]));
            Assert.That(node2, Is.SameAs(tree.MainGroup[56]));
        }
Пример #23
0
        public void LoadObjectNode()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode node = tree.MainGroup.SelectSingleNode("object").ParentNode;

            ObjectNode objNode = new ObjectNode(node);

            Assert.That(objNode.ObjectType, Is.EqualTo("objemb"));
            Assert.That(objNode.ObjectClass, Is.EqualTo("Excel.Sheet.8"));
        }
Пример #24
0
        public void SelectSingleGroup()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleGroup("f");
            RtfTreeNode node2 = tree.MainGroup[5].SelectSingleChildGroup("f");

            Assert.That(node1, Is.SameAs(tree.MainGroup[5].ChildNodes[1]));
            Assert.That(node2, Is.SameAs(tree.MainGroup[5].ChildNodes[1]));
        }
Пример #25
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));
        }
Пример #26
0
        public void ParseSimpleRtfText()
        {
            RtfTree tree = new RtfTree();

            tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfPullParser parser = new RtfPullParser();

            parser.LoadRtfText(tree.Rtf);

            parserTests(parser);
        }
Пример #27
0
        public void SelectSingleNodeByKeyword()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleNode("fs");
            RtfTreeNode node2 = tree.MainGroup.SelectSingleNode("f");

            Assert.That(node1, Is.SameAs(tree.MainGroup[17]));
            Assert.That(node2, Is.SameAs(tree.MainGroup[5].ChildNodes[1].FirstChild));
        }
Пример #28
0
        public void MergeDocumentsInMemory()
        {
            RtfMerger merger = new RtfMerger();

            RtfTree tree = new RtfTree();

            tree.LoadRtfFile("..\\..\\testdocs\\merge-template.rtf");

            merger.Template = tree;

            RtfTree ph1 = new RtfTree();

            ph1.LoadRtfFile("..\\..\\testdocs\\merge-doc1.rtf");

            RtfTree ph2 = new RtfTree();

            ph2.LoadRtfFile("..\\..\\testdocs\\merge-doc2.rtf");

            merger.AddPlaceHolder("$doc1$", ph1);
            merger.AddPlaceHolder("$doc2$", ph2);

            Assert.That(merger.Placeholders.Count, Is.EqualTo(2));

            RtfTree ph3 = new RtfTree();

            ph3.LoadRtfFile("..\\..\\testdocs\\merge-doc2.rtf");

            merger.AddPlaceHolder("$doc3$", ph3);

            Assert.That(merger.Placeholders.Count, Is.EqualTo(3));

            merger.RemovePlaceHolder("$doc3$");

            Assert.That(merger.Placeholders.Count, Is.EqualTo(2));

            RtfTree resTree = merger.Merge();

            resTree.SaveRtf("..\\..\\testdocs\\merge-result-2.rtf");

            StreamReader sr = null;

            sr = new StreamReader("..\\..\\testdocs\\merge-result-2.rtf");
            string rtf1 = sr.ReadToEnd();

            sr.Close();

            sr = new StreamReader("..\\..\\testdocs\\rtf3.txt");
            string rtf3 = sr.ReadToEnd();

            sr.Close();

            Assert.That(rtf1, Is.EqualTo(rtf3));
        }
Пример #29
0
        public void LoadObjectNode()
        {
            RtfTree tree = new RtfTree();

            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode node = tree.MainGroup.SelectSingleNode("object").ParentNode;

            ObjectNode objNode = new ObjectNode(node);

            Assert.That(objNode.ObjectType, Is.EqualTo("objemb"));
            Assert.That(objNode.ObjectClass, Is.EqualTo("Excel.Sheet.8"));
        }
Пример #30
0
            public RtfDocument(string path, Encoding enc)
                : this(enc)
            {
                RtfTree tree = new RtfTree();
                //Load and parse RTF document
                tree.LoadRtfFile(path);

                this.fontTable  = tree.GetFontTable();
                this.colorTable = tree.GetColorTable();
                this.encoding   = tree.GetEncoding();

                this.mainGroup = tree.MainGroup;
            }
Пример #31
0
        public void SelectChildGroups()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection lista1 = tree.MainGroup.SelectChildGroups("colortbl");  //1 node
            RtfNodeCollection lista2 = tree.MainGroup.SelectChildGroups("f");         //0 nodes

            Assert.That(lista1.Count, Is.EqualTo(1));
            Assert.That(lista2.Count, Is.EqualTo(0));

            Assert.That(lista1[0], Is.SameAs(tree.MainGroup[6]));
        }
Пример #32
0
        public void ReplaceText()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            tree.MainGroup.ReplaceText("Italic", "REPLACED");

            StreamReader sr = null;
            sr = new StreamReader("..\\..\\testdocs\\rtf2.txt");
            string rtf2 = sr.ReadToEnd();
            sr.Close();

            Assert.That(tree.Rtf, Is.EqualTo(rtf2));
        }
Пример #33
0
            /// <summary>
            /// Constructor de la clase RtfMerger. 
            /// </summary>
            /// <param name="sSourceDocFullPathName">Ruta del documento plantilla.</param>
            /// <param name="sDestFileFullPathName">Ruta del documento resultante.</param>
            /// <param name="bolRemoveLastParCmd">Indica si se debe eliminar el último nodo \par de los documentos insertados en la plantilla.</param>
            public RtfMerger(string sSourceDocFullPathName, string sDestFileFullPathName, bool bolRemoveLastParCmd)
            {
                //Se carga el documento origen
                baseRtfDoc = new RtfTree();
                baseRtfDoc.LoadRtfFile(sSourceDocFullPathName);

                //Se guarda la ruta del documento destino
                destFilePath = sDestFileFullPathName;

                //Indicativo de eliminación del último nodo \par para documentos insertados
                removeLastPar = bolRemoveLastParCmd;

                //Se crea la lista de parámetros de sustitución (placeholders)
                placeHolder = new Dictionary<string, RtfTree>();
            }
Пример #34
0
        public void FindText()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection list1 = tree.MainGroup.FindText("Italic");

            Assert.That(list1.Count, Is.EqualTo(2));

            Assert.That(list1[0], Is.SameAs(tree.MainGroup[18]));
            Assert.That(list1[0].NodeKey, Is.EqualTo("Bold Italic Underline Size 14"));

            Assert.That(list1[1], Is.SameAs(tree.MainGroup[73]));
            Assert.That(list1[1].NodeKey, Is.EqualTo("Italic2"));
        }
Пример #35
0
        public void FindText()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection list1 = tree.MainGroup.FindText("Italic");

            Assert.That(list1.Count, Is.EqualTo(2));

            Assert.That(list1[0], Is.SameAs(tree.MainGroup[18]));
            Assert.That(list1[0].NodeKey, Is.EqualTo("Bold Italic Underline Size 14"));

            Assert.That(list1[1], Is.SameAs(tree.MainGroup[73]));
            Assert.That(list1[1].NodeKey, Is.EqualTo("Italic2"));
        }
Пример #36
0
        public void ImageBinData()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode pictNode = tree.MainGroup.SelectNodes("pict")[2].ParentNode;

            ImageNode imgNode = new ImageNode(pictNode);

            imgNode.SaveImage("..\\..\\testdocs\\img-result.png", ImageFormat.Jpeg);

            Stream fs1 = new FileStream("..\\..\\testdocs\\img-result.jpg", FileMode.Open);
            Stream fs2 = new FileStream("..\\..\\testdocs\\image1.jpg", FileMode.Open);

            Assert.That(fs1, Is.EqualTo(fs2));
        }
Пример #37
0
        public void ImageHexData()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode pictNode = tree.MainGroup.SelectNodes("pict")[2].ParentNode;

            ImageNode imgNode = new ImageNode(pictNode);

            StreamReader sr = null;

            sr = new StreamReader("..\\..\\testdocs\\imghexdata.txt");
            string hexdata = sr.ReadToEnd();
            sr.Close();

            Assert.That(imgNode.HexData, Is.EqualTo(hexdata));
        }
Пример #38
0
        public void ReplaceText()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            tree.MainGroup.ReplaceText("Italic", "REPLACED");

            StreamReader sr = null;

            sr = new StreamReader("..\\..\\testdocs\\rtf2.txt");
            string rtf2 = sr.ReadToEnd();

            sr.Close();

            Assert.That(tree.Rtf, Is.EqualTo(rtf2));
        }
Пример #39
0
        public void ImageBinData()
        {
            RtfTree tree = new RtfTree();

            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode pictNode = tree.MainGroup.SelectNodes("pict")[2].ParentNode;

            ImageNode imgNode = new ImageNode(pictNode);

            imgNode.SaveImage("..\\..\\testdocs\\img-result.png", ImageFormat.Jpeg);

            Stream fs1 = new FileStream("..\\..\\testdocs\\img-result.jpg", FileMode.Open);
            Stream fs2 = new FileStream("..\\..\\testdocs\\image1.jpg", FileMode.Open);

            Assert.That(fs1, Is.EqualTo(fs2));
        }
Пример #40
0
        public void ObjectBinData()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode node = tree.MainGroup.SelectSingleNode("object").ParentNode;

            ObjectNode objNode = new ObjectNode(node);

            BinaryWriter bw = new BinaryWriter(new FileStream("..\\..\\testdocs\\objbindata-result.dat", FileMode.Create));
            foreach (byte b in objNode.GetByteData())
                bw.Write(b);
            bw.Close();

            FileStream fs1 = new FileStream("..\\..\\testdocs\\objbindata-result.dat", FileMode.Open);
            FileStream fs2 = new FileStream("..\\..\\testdocs\\objbindata.dat", FileMode.Open);

            Assert.That(fs1, Is.EqualTo(fs2));
        }
Пример #41
0
        private string Convert()
        {
            var processLine = new RtfProcessLine();
            var tree = new RtfTree();
            tree.LoadRtfFile(m_FileName, Encoding.GetEncoding("Windows-1252"));

            m_Builder = new StringBuilder();
            foreach (RtfTreeNode node in tree.MainGroup.ChildNodes)
            {
                switch (node.NodeType)
                {
                    case RtfNodeType.Group:
                        if (IncludeText(node.Text) && IsParaOpen)
                            processLine.ProcessGroup(m_Builder, node, m_CurrentLine);
                        break;
                    case RtfNodeType.Text:
                        if (IncludeText(node.Text) && IsParaOpen)
                            processLine.AddText(m_Builder, node.Text);
                        break;
                    case RtfNodeType.Keyword:
                        {
                            switch (node.NodeKey)
                            {
                                case "line":
                                case "par":
                                    if (IsParaOpen)
                                        m_Builder.AppendLine();
                                    break;
                                case "pard":
                                    StartNewPara();
                                    break;
                                case "tx":
                                    AddTabStop(node.Parameter);
                                    break;
                            }
                            break;
                        }
                }
            }
            //Console.WriteLine("Document: " + m_Builder.ToString());
            return m_Builder.ToString();
        }
Пример #42
0
            /// <summary>
            /// Asocia un nuevo parámetro de sustitución (placeholder) con la ruta del documento a insertar.
            /// </summary>
            /// <param name="ph">Nombre del placeholder.</param>
            /// <param name="path">Ruta del documento a insertar.</param>
            public void AddPlaceHolder(string ph, string path)
            {
                RtfTree tree = new RtfTree();

                int res = tree.LoadRtfFile(path);

                if (res == 0)
                {
                    placeHolder.Add(ph, tree);
                }
            }
Пример #43
0
        public void SelectSiblings()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.ChildNodes[4];               //deflang3082
            RtfTreeNode node2 = tree.MainGroup.ChildNodes[6].ChildNodes[2]; //colortbl/red

            RtfTreeNode n1 = node1.SelectSibling(RtfNodeType.Group);
            RtfTreeNode n2 = node1.SelectSibling("viewkind");
            RtfTreeNode n3 = node1.SelectSibling("fs", 28);

            RtfTreeNode n4 = node2.SelectSibling(RtfNodeType.Keyword);
            RtfTreeNode n5 = node2.SelectSibling("blue");
            RtfTreeNode n6 = node2.SelectSibling("red", 255);

            Assert.That(n1, Is.SameAs(tree.MainGroup[5]));
            Assert.That(n2, Is.SameAs(tree.MainGroup[8]));
            Assert.That(n3, Is.SameAs(tree.MainGroup[17]));

            Assert.That(n4, Is.SameAs(tree.MainGroup[6].ChildNodes[3]));
            Assert.That(n5, Is.SameAs(tree.MainGroup[6].ChildNodes[4]));
            Assert.That(n6, Is.SameAs(tree.MainGroup[6].ChildNodes[6]));
        }
Пример #44
0
        public void SelectSingleChildNodeByType()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleChildNode(RtfNodeType.Keyword); //rtf1
            RtfTreeNode node2 = tree.MainGroup.SelectSingleChildNode(RtfNodeType.Control); //'233
            RtfTreeNode node3 = tree.MainGroup.SelectSingleChildNode(RtfNodeType.Group);   //fonttbl

            Assert.That(node1, Is.SameAs(tree.MainGroup[0]));
            Assert.That(node1.NodeKey, Is.EqualTo("rtf"));
            Assert.That(node2, Is.SameAs(tree.MainGroup[45]));
            Assert.That(node2.NodeKey, Is.EqualTo("'"));
            Assert.That(node2.Parameter, Is.EqualTo(233));
            Assert.That(node3, Is.SameAs(tree.MainGroup[5]));
            Assert.That(node3.FirstChild.NodeKey, Is.EqualTo("fonttbl"));
        }
Пример #45
0
        public void SelectChildGroups()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection lista1 = tree.MainGroup.SelectChildGroups("colortbl");  //1 node
            RtfNodeCollection lista2 = tree.MainGroup.SelectChildGroups("f");         //0 nodes

            Assert.That(lista1.Count, Is.EqualTo(1));
            Assert.That(lista2.Count, Is.EqualTo(0));

            Assert.That(lista1[0], Is.SameAs(tree.MainGroup[6]));
        }
Пример #46
0
        public void SelectSingleChildNodeByKeyword()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleChildNode("fs");
            RtfTreeNode node2 = tree.MainGroup.SelectSingleChildNode("f");

            Assert.That(node1, Is.SameAs(tree.MainGroup[17]));
            Assert.That(node2, Is.SameAs(tree.MainGroup[16]));
        }
Пример #47
0
        public void ResultNode()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode node = tree.MainGroup.SelectSingleNode("object").ParentNode;

            ObjectNode objNode = new ObjectNode(node);

            RtfTreeNode resNode = objNode.ResultNode;

            Assert.That(resNode, Is.SameAs(tree.MainGroup.SelectSingleGroup("object").SelectSingleChildGroup("result")));

            RtfTreeNode pictNode = resNode.SelectSingleNode("pict").ParentNode;
            ImageNode imgNode = new ImageNode(pictNode);

            Assert.That(imgNode.Height, Is.EqualTo(2247));
            Assert.That(imgNode.Width, Is.EqualTo(9320));

            Assert.That(imgNode.DesiredHeight, Is.EqualTo(1274));
            Assert.That(imgNode.DesiredWidth, Is.EqualTo(5284));

            Assert.That(imgNode.ScaleX, Is.EqualTo(100));
            Assert.That(imgNode.ScaleY, Is.EqualTo(100));

            Assert.That(imgNode.ImageFormat, Is.EqualTo(ImageFormat.Emf));
        }
Пример #48
0
            private static void ExtractHyperlinks()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                RtfNodeCollection fields = tree.MainGroup.SelectGroups("field");

                foreach (RtfTreeNode node in fields)
                {
                    //Extract URL

                    RtfTreeNode fldInst = node.ChildNodes[1];

                    string fldInstText = ExtractGroupText(fldInst);

                    string url = fldInstText.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[1];

                    //Extract Link Text

                    RtfTreeNode fldRslt = node.SelectSingleChildGroup("fldrslt");

                    string linkText = ExtractGroupText(fldRslt);

                    Console.WriteLine("[" + linkText + ", " + url + "]");
                }
            }
Пример #49
0
            public static void ExtractDocumentOutline()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                RtfStyleSheetTable sst = tree.GetStyleSheetTable();

                int heading1 = sst.IndexOf("heading 1");
                int heading2 = sst.IndexOf("heading 2");
                int heading3 = sst.IndexOf("heading 3");

                tree.MainGroup.RemoveChild(tree.MainGroup.SelectChildGroups("stylesheet")[0]);

                RtfNodeCollection headingKeywords = tree.MainGroup.SelectNodes("s");

                for (int i = 0; i < headingKeywords.Count; i++)
                {
                    RtfTreeNode hk = headingKeywords[i];

                    StringBuilder text = new StringBuilder("");

                    if (hk.Parameter == heading1 ||
                        hk.Parameter == heading2 ||
                        hk.Parameter == heading3)
                    {
                        RtfTreeNode sibling = hk.NextSibling;

                        while (sibling != null && !sibling.NodeKey.Equals("pard"))
                        {
                            if (sibling.NodeType == RtfNodeType.Text)
                                text.Append(sibling.NodeKey);
                            else if (sibling.NodeType == RtfNodeType.Group)
                                text.Append(ExtractGroupText(sibling));

                            sibling = sibling.NextSibling;
                        }

                        if (hk.Parameter == heading1)
                            Console.WriteLine("H1: {0}", text);
                        else if (hk.Parameter == heading2)
                            Console.WriteLine("    H2: {0}", text);
                        else if (hk.Parameter == heading3)
                            Console.WriteLine("        H3: {0}", text);
                    }
                }
            }
Пример #50
0
            public static void ExtractPlainText()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                StreamWriter sw = new StreamWriter("..\\..\\testdocs\\rtftext.txt");

                Console.WriteLine("Extracting text...");

                sw.Write(tree.Text);
                sw.Flush();
                sw.Close();

                Console.WriteLine("File 'rtftext.txt' created.");

                Console.WriteLine("");
            }
Пример #51
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("");
            }
Пример #52
0
            public static void ExtractDocumentProperties()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                InfoGroup info = tree.GetInfoGroup();

                Console.WriteLine("Extracting document properties:");

                Console.WriteLine("Title: {0}", info.Title);
                Console.WriteLine("Author: {0}", info.Author);
                Console.WriteLine("Company: {0}", info.Company);
                Console.WriteLine("Comments: {0}", info.DocComment);
                Console.WriteLine("Created: {0}", info.CreationTime);
                Console.WriteLine("Revised: {0}", info.RevisionTime);

                Console.WriteLine("");
            }
Пример #53
0
        public void SelectSingleNodeByKeywordAndParam()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleNode("fs", 24);
            RtfTreeNode node2 = tree.MainGroup.SelectSingleNode("f", 1);

            Assert.That(node1, Is.SameAs(tree.MainGroup[22]));
            Assert.That(node2, Is.SameAs(tree.MainGroup[5].ChildNodes[2].FirstChild));
        }
Пример #54
0
        public void SelectSingleNodeByType()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleNode(RtfNodeType.Keyword); //rtf1
            RtfTreeNode node2 = tree.MainGroup.SelectSingleNode(RtfNodeType.Control); //* generator
            RtfTreeNode node3 = tree.MainGroup.SelectSingleNode(RtfNodeType.Group);   //fonttbl

            Assert.That(node1, Is.SameAs(tree.MainGroup[0]));
            Assert.That(node1.NodeKey, Is.EqualTo("rtf"));
            Assert.That(node2, Is.SameAs(tree.MainGroup[7].ChildNodes[0]));
            Assert.That(node2.NodeKey, Is.EqualTo("*"));
            Assert.That(node2.NextSibling.NodeKey, Is.EqualTo("generator"));
            Assert.That(node3, Is.SameAs(tree.MainGroup[5]));
            Assert.That(node3.FirstChild.NodeKey, Is.EqualTo("fonttbl"));
        }
Пример #55
0
            private static void ExtractImages()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                RtfNodeCollection imageNodes = tree.RootNode.SelectNodes("pict");

                Console.WriteLine("Extracting images...");

                int i = 1;
                foreach (RtfTreeNode node in imageNodes)
                {
                    ImageNode imageNode = new ImageNode(node.ParentNode);

                    if (imageNode.ImageFormat == ImageFormat.Png)
                    {
                        imageNode.SaveImage("..\\..\\testdocs\\image" + i + ".png");

                        Console.WriteLine("File '" + "image" + i + ".png" + "' created.");

                        i++;
                    }
                }

                Console.WriteLine("");
            }
Пример #56
0
        public void SelectSingleGroup()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfTreeNode node1 = tree.MainGroup.SelectSingleGroup("f");
            RtfTreeNode node2 = tree.MainGroup[5].SelectSingleChildGroup("f");

            Assert.That(node1, Is.SameAs(tree.MainGroup[5].ChildNodes[1]));
            Assert.That(node2, Is.SameAs(tree.MainGroup[5].ChildNodes[1]));
        }
Пример #57
0
        public void ObjectHexData()
        {
            RtfTree tree = new RtfTree();
            tree.LoadRtfFile("..\\..\\testdocs\\testdoc3.rtf");

            RtfTreeNode node = tree.MainGroup.SelectSingleNode("object").ParentNode;

            ObjectNode objNode = new ObjectNode(node);

            StreamReader sr = null;

            sr = new StreamReader("..\\..\\testdocs\\objhexdata.txt");
            string hexdata = sr.ReadToEnd();
            sr.Close();

            Assert.That(objNode.HexData, Is.EqualTo(hexdata));
        }
Пример #58
0
            private static void ExtractObjects()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc.rtf");

                //Busca el primer nodo de tipo objeto.
                RtfNodeCollection objects = tree.RootNode.SelectGroups("object");

                Console.WriteLine("Extracting objects...");

                int i = 1;
                foreach (RtfTreeNode node in objects)
                {
                    //Se crea un nodo RTF especializado en imágenes
                    ObjectNode objectNode = new ObjectNode(node);

                    Console.WriteLine("Found new object:");
                    Console.WriteLine("Object type: " + objectNode.ObjectType);
                    Console.WriteLine("Object class: " + objectNode.ObjectClass);

                    byte[] data = objectNode.GetByteData();

                    FileStream binaryFile = new FileStream("..\\..\\testdocs\\object" + i + ".xls", FileMode.Create, FileAccess.ReadWrite);
                    BinaryWriter bw = new BinaryWriter(binaryFile);

                    for (int j = 38; j < data.Length; j++)
                    {
                        bw.Write(data[j]);
                    }
                    bw.Flush();
                    bw.Close();

                    Console.WriteLine("File 'object" + i + ".xls' created.");

                    i++;
                }

                Console.WriteLine("");
            }
Пример #59
0
            private static void ConvertToHtml()
            {
                RtfTree tree = new RtfTree();
                tree.LoadRtfFile("..\\..\\testdocs\\test-doc2.rtf");

                Rtf2Html rtfToHtml = new Rtf2Html();

                Console.WriteLine("Processing...");
                rtfToHtml.IncrustImages = false;
                string html = rtfToHtml.Convert(tree.Rtf);

                StreamWriter sw = new StreamWriter("..\\..\\testdocs\\test.html", false);
                sw.Write(html);
                sw.Flush();
                sw.Close();

                Console.WriteLine("File 'test.html' created.");

                Console.WriteLine("");
            }
Пример #60
0
        public void SelectSpecialGroups()
        {
            RtfTree tree = new RtfTree();

            int res = tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf");

            RtfNodeCollection list1 = tree.MainGroup.SelectChildGroups("generator");
            RtfNodeCollection list2 = tree.MainGroup.SelectChildGroups("generator", false);
            RtfNodeCollection list3 = tree.MainGroup.SelectChildGroups("generator", true);

            RtfNodeCollection list4 = tree.MainGroup.SelectGroups("generator");
            RtfNodeCollection list5 = tree.MainGroup.SelectGroups("generator", false);
            RtfNodeCollection list6 = tree.MainGroup.SelectGroups("generator", true);

            RtfTreeNode node1 = tree.MainGroup.SelectSingleChildGroup("generator");
            RtfTreeNode node2 = tree.MainGroup.SelectSingleChildGroup("generator", false);
            RtfTreeNode node3 = tree.MainGroup.SelectSingleChildGroup("generator", true);

            RtfTreeNode node4 = tree.MainGroup.SelectSingleGroup("generator");
            RtfTreeNode node5 = tree.MainGroup.SelectSingleGroup("generator", false);
            RtfTreeNode node6 = tree.MainGroup.SelectSingleGroup("generator", true);

            Assert.That(list1.Count, Is.EqualTo(0));
            Assert.That(list2.Count, Is.EqualTo(0));
            Assert.That(list3.Count, Is.EqualTo(1));

            Assert.That(list4.Count, Is.EqualTo(0));
            Assert.That(list5.Count, Is.EqualTo(0));
            Assert.That(list6.Count, Is.EqualTo(1));

            Assert.That(node1, Is.Null);
            Assert.That(node2, Is.Null);
            Assert.That(node3, Is.Not.Null);

            Assert.That(node4, Is.Null);
            Assert.That(node5, Is.Null);
            Assert.That(node6, Is.Not.Null);
        }