Since I'm pretty new to WPF FlowDocuments, I would like to ask if the code is correct. It should return all images contained in the FlowDocument as a List:
List<Image> FindAllImagesInParagraph(Paragraph paragraph) { List<Image> result = null; foreach (var inline in paragraph.Inlines) { var inlineUIContainer = inline as InlineUIContainer; if (inlineUIContainer != null) { var image = inlineUIContainer.Child as Image; if (image != null) { if (result == null) result = new List<Image>(); result.Add(image); } } } return result; } private List<Image> FindAllImagesInDocument(FlowDocument Document) { List<Image> result = new List<Image>(); foreach (var block in Document.Blocks) { if (block is Table) { var table = block as Table; foreach (TableRowGroup rowGroup in table.RowGroups) { foreach (TableRow row in rowGroup.Rows) { foreach (TableCell cell in row.Cells) { foreach (var block2 in cell.Blocks) { if (block2 is Paragraph) { var paragraph = block2 as Paragraph; var images = FindAllImagesInParagraph(paragraph); if (images != null) result.AddRange(images); } else if (block2 is BlockUIContainer) { var container = block as BlockUIContainer; if (container.Child is Image) { var image = container.Child as Image; result.Add(image); } } } } } } } else if (block is Paragraph) { var paragraph = block as Paragraph; var images = FindAllImagesInParagraph(paragraph); if (images != null) result.AddRange(images); } else if (block is BlockUIContainer) { var container = block as BlockUIContainer; if(container.Child is Image) { var image = container.Child as Image; result.Add(image); } } } return result.Count > 0 ? result : null; }
source share