Exemplo n.º 1
0
        private IEnumerable <PartsSelectionTreeElement> CreatePartsSelectionTreeElements(OpenXmlElement element, int id, Predicate <OpenXmlElement> supportedType, int indent)
        {
            List <PartsSelectionTreeElement> result = new List <PartsSelectionTreeElement>();

            if (supportedType(element))
            {
                PartsSelectionTreeElement elementToAdd;
                if (element is Paragraph)
                {
                    Paragraph           paragraph           = element as Paragraph;
                    NumberingProperties numberingProperties = null;
                    if (paragraph.ParagraphProperties != null)
                    {
                        numberingProperties = paragraph.ParagraphProperties.NumberingProperties;
                    }
                    string elementId = paragraph.ParagraphId ?? WordDocumentPartAttributes.GetParagraphNoIdFormatter(_paragraphCounter);

                    if (numberingProperties != null)
                    {
                        indent += numberingProperties.NumberingLevelReference.Val.Value;
                        if (WordDocumentPartAttributes.BulletListIds.Any(b => b == numberingProperties.NumberingId.Val.Value))
                        {
                            elementToAdd = new PartsSelectionTreeElement(id.ToString(), elementId, WordTools.GetElementName(element, WordDocumentPartAttributes.MaxNameLength), indent, Helpers.ElementType.BulletList);
                        }
                        else if (WordDocumentPartAttributes.NumberedListIds.Any(b => b == numberingProperties.NumberingId.Val.Value))
                        {
                            elementToAdd = new PartsSelectionTreeElement(id.ToString(), elementId, WordTools.GetElementName(element, WordDocumentPartAttributes.MaxNameLength), indent, Helpers.ElementType.NumberedList);
                        }
                        else
                        {
                            elementToAdd = new PartsSelectionTreeElement(id.ToString(), elementId, WordTools.GetElementName(element, WordDocumentPartAttributes.MaxNameLength), indent, Helpers.ElementType.BulletList);
                        }
                    }
                    else
                    {
                        elementToAdd = new PartsSelectionTreeElement(id.ToString(), elementId, WordTools.GetElementName(element, WordDocumentPartAttributes.MaxNameLength), indent, Helpers.ElementType.Paragraph);
                    }

                    _paragraphCounter++;
                }
                else if (element is Picture || element is Drawing)
                {
                    elementToAdd = new PartsSelectionTreeElement(id.ToString(), element.LocalName, indent, Helpers.ElementType.Picture);
                }
                else if (element is Table)
                {
                    elementToAdd = new PartsSelectionTreeElement(id.ToString(), (element as Table).LocalName, indent, Helpers.ElementType.Table);
                }
                else
                {
                    elementToAdd = new PartsSelectionTreeElement(id.ToString(), WordTools.GetElementName(element, WordDocumentPartAttributes.MaxNameLength), indent);
                }

                result.Add(elementToAdd);
                if (element.HasChildren)
                {
                    foreach (var elmentChild in element.ChildElements)
                    {
                        _index++;
                        CreatePartsSelectionTreeElements(elmentChild, _index, supportedType, ++indent);
                    }
                }
            }

            return(result);
        }
Exemplo n.º 2
0
 public List <PartsSelectionTreeElement> Get(Stream file)
 {
     return(Get(file, el => WordDocumentPartAttributes.IsSupportedType(el)));
 }