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)); }
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")); }
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])); }
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)); }
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 + "]"); } }
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;")); }
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; } }
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])); }
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")); }
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(""); }
private EstadoRtf estadoActual; //Estado flujo RTF actual #endregion #region Constructores public TraductorRtf(string rutaRTF) { estados = new ArrayList(); tree = new RtfTree(); tree.LoadRtfFile(rutaRTF); }
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")); }
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!"); } } }
/// <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>(); }
/// <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>(); }
public static void LoadTree() { RtfTree tree = new RtfTree(); //Load and parse RTF document tree.LoadRtfFile(@"D:\rtfdoc.rtf"); tree.SaveRtf("path"); }
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); } } } }
public void ParseSimpleRtfText() { RtfTree tree = new RtfTree(); tree.LoadRtfFile("..\\..\\testdocs\\testdoc1.rtf"); RtfPullParser parser = new RtfPullParser(); parser.LoadRtfText(tree.Rtf); parserTests(parser); }
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)); }
/// <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); } }
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])); }
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")); }
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])); }
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 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)); }
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)); }
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; }
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])); }
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)); }
/// <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>(); }
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")); }
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)); }
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)); }
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)); }
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(); }
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")); }
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])); }
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); } } }
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(""); }
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 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(""); }
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)); }
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")); }
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)); }
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(""); }
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(""); }
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); }