ShapeHasImage Property |
Namespace: Aspose.Words.Drawing
public void ExtractImagesToFiles() { Document doc = new Document(MyDir + "Images.docx"); NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true); int imageIndex = 0; foreach (Shape shape in shapes.OfType<Shape>()) { if (shape.HasImage) { string imageFileName = $"File.ExtractImagesToFiles.{imageIndex}{FileFormatUtil.ImageTypeToExtension(shape.ImageData.ImageType)}"; shape.ImageData.Save(ArtifactsDir + imageFileName); imageIndex++; } } }
Document doc = new Document(MyDir + "Images.docx"); Assert.AreEqual(10, doc.GetChildNodes(NodeType.Shape, true).Count); // Here we get all shapes from the document node, but you can do this for any smaller // node too, for example delete shapes from a single section or a paragraph NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true); // We cannot delete shape nodes while we enumerate through the collection // One solution is to add nodes that we want to delete to a temporary array and delete afterwards ArrayList shapesToDelete = new ArrayList(); foreach (Shape shape in shapes.OfType<Shape>()) { // Several shape types can have an image including image shapes and OLE objects if (shape.HasImage) shapesToDelete.Add(shape); } // Now we can delete shapes foreach (Shape shape in shapesToDelete) shape.Remove(); Assert.AreEqual(1, doc.GetChildNodes(NodeType.Shape, true).Count); doc.Save(ArtifactsDir + "Image.DeleteAllImages.docx");