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 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!"); } } }
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)); }
private void button5_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 todos los nodos de tipo "\pict" (Imagen) RtfNodeCollection imageNodes = arbol.RootNode.SelectNodes("pict"); //Se recorren los nodos encontrados int i = 1; foreach (RtfTreeNode node in imageNodes) { //Se crea un nodo RTF especializado en imágenes ImageNode imageNode = new ImageNode(node.ParentNode); //Se guarda el contenido de la imagen a un fichero con el formato original con el que se almacenó en el documento. imageNode.SaveImage("image" + i + "." + getExtension(imageNode.ImageFormat)); i++; } } }