public XElement Parse(Paragraph paragraph)
        {
            Style style = (Style)paragraph.get_Style();

            if (style.NameLocal == DocumentAndParagraphStyles.ImagePreviewStyle)
            {
                IEnumerable <Hyperlink> hs = paragraph.Range.Hyperlinks.Cast <Hyperlink>().ToArray();
                if (hs.Count() == 0)
                {
                    return(null);
                }

                try
                {
                    var hyperline = hs.First();

                    if (!WordUtils.IsHyperlinkValid(hyperline))
                    {
                        return(null);
                    }

                    Uri tempUri = new Uri(hyperline.Address);
                    var src     = tempUri.AbsolutePath;
                    //XElement wrapper = GetImageElement(src, hyperline.ScreenTip);
                    XElement wrapper = GetImageElement(src);
                    return(wrapper);
                }
                catch (WebException e)
                {
                    Globals.SitecoreAddin.LogException("", e);
                    Globals.SitecoreAddin.AlertConnectionFailure();
                }
                catch (Exception e)
                {
                    Globals.SitecoreAddin.LogException("", e);
                    throw;
                }
            }
            if (ImageStyles.Contains(style.NameLocal))
            {
                WordStyleStruct w;
                if (!ParagraphStyles.TryGetValue(style.NameLocal, out w))
                {
                    return(null);
                }
                var element = new XElement("p");
                element.SetAttributeValue("class", w.CssClass);
                element = Transformer.GetCharacterStyledElement(element, paragraph, CharacterStyleFactory.GetCharacterStyles(), false);//new XElement(w.CssElement);

                //var value = Transformer.GetCharacterStylesValue(paragraph).Replace("\a", "");
                string value = element.Value;
                if (value.StartsWith("SOURCE: "))
                {
                    element.Value = value.Remove(0, 8);
                }
                return(element);
            }
            return(null);
        }
Beispiel #2
0
        /// <summary>
        /// Parses hyperlink if the current Range in the enumerator e
        /// is part of a hyperlink and moves the enumerator to the next
        /// Range not part of current hyperlink
        /// </summary>
        /// <param name="e"></param>
        /// <param name="currentElement"></param>
        /// <returns>True if is hyperlink, else false</returns>
        protected bool ParseHyperlink(ref List <Range> .Enumerator e, XElement currentElement)
        {
            var cur = e.Current;

            if (cur == null)
            {
                return(false);
            }
            IEnumerable <Hyperlink> hs = cur.Hyperlinks.Cast <Hyperlink>().ToList();

            if (hs.Any())
            {
                Hyperlink currentHyperlink      = hs.First();
                Range     currentHyperlinkRange = currentHyperlink.Range;

                if (currentHyperlinkRange != null)
                {
                    while (e.Current != null && (e.Current.End < currentHyperlinkRange.End && e.MoveNext()))
                    {
                    }
                }

                if (!WordUtils.IsHyperlinkValid(currentHyperlink))
                {
                    return(false);
                }

                XElement temp = SupportingDocumentsReferenceBuilder.GetHtmlHyperlink(currentHyperlink);
                if (temp != null)
                {
                    currentElement.Add(temp);
                    return(true);
                }
                if (!ShouldNotTransformHyperlink(currentHyperlink))
                {
                    currentElement.Add(GetExternalHyperlink(currentHyperlink));
                    return(true);
                }
                if (currentHyperlinkRange != null)
                {
                    currentElement.Add(currentHyperlinkRange.Text.RinseMsChars());
                    return(false);
                }
            }
            return(false);
        }