예제 #1
0
        protected override void Write(OpenXMLRenderer renderer, ParagraphBlock obj)
        {
            var paragraph = renderer.PushNewParagraph();

            renderer.WriteLeafInline(obj);
            renderer.PopTo(paragraph);

            renderer.AddBookmarkIfNeccessary(obj, paragraph);
        }
예제 #2
0
        protected override void Write(OpenXMLRenderer renderer, HeadingBlock obj)
        {
            FormatStyle id;

            switch (obj.Level)
            {
            case 1:
                id = FormatStyle.Heading1;
                break;

            case 2:
                id = FormatStyle.Heading2;
                break;

            case 3:
                id = FormatStyle.Heading3;
                break;

            case 4:
                id = FormatStyle.Heading4;
                break;

            case 5:
                id = FormatStyle.Heading5;
                break;

            case 6:
                id = FormatStyle.Heading6;
                break;

            case 7:
                id = FormatStyle.Heading7;
                break;

            case 8:
                id = FormatStyle.Heading8;
                break;

            case 9:
                id = FormatStyle.Heading9;
                break;

            default:
                throw new NotImplementedException();
            }

            renderer.PushParagraphFormat(id);
            var paragraph = renderer.PushNewParagraph();

            renderer.WriteLeafInline(obj);
            renderer.PopTo(paragraph);
            renderer.PopParagraphFormat();


            renderer.AddBookmarkIfNeccessary(obj, paragraph);
        }
예제 #3
0
        /// <inheritdoc/>
        protected override void Write(OpenXMLRenderer renderer, LinkInline link)
        {
            var url = link.GetDynamicUrl != null?link.GetDynamicUrl() ?? link.Url : link.Url;

            if (link.IsImage)
            {
                RenderImage(renderer, link, url);
                renderer.AddBookmarkIfNeccessary(link);
            }
            else // link is not an image
            {
                if (Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
                {
                    ++_linkIndex;
                    //var nextId = renderer._wordDocument.MainDocumentPart.Parts.Count() + 1;
                    var rId = "lkId" + _linkIndex.ToString(System.Globalization.CultureInfo.InvariantCulture);
                    renderer._wordDocument.MainDocumentPart.AddHyperlinkRelationship(new System.Uri(url, System.UriKind.Absolute), true, rId);

                    var hyperlink = new Hyperlink()
                    {
                        Id = rId
                    };
                    renderer.Push(hyperlink);
                    renderer.WriteChildren(link);

                    foreach (var run in hyperlink.ChildElements.OfType <Run>())
                    {
                        renderer.ApplyStyleToRun(StyleDictionary.IdToName[FormatStyle.Link], run);
                    }

                    renderer.PopTo(hyperlink);
                }
                else if (!string.IsNullOrEmpty(url) && url.StartsWith("#")) // not a well formed Uri String - then it is probably a fragment reference
                {
                    if (null != renderer.FigureLinkList)
                    {
                        var idx = renderer.FigureLinkList.FindIndex(x => object.ReferenceEquals(x.Link, link));
                        if (idx >= 0)
                        {
                            renderer.CurrentFigureLinkListIndex = idx;
                        }
                    }

                    var hyperlink = new Hyperlink()
                    {
                        Anchor = url.Substring(1)
                    };
                    renderer.Push(hyperlink);
                    renderer.WriteChildren(link);

                    if (!renderer.CurrentFigureLinkListIndex.HasValue || !renderer.DoNotFormatFigureLinksAsHyperlinks)
                    {
                        foreach (var run in hyperlink.ChildElements.OfType <Run>())
                        {
                            renderer.ApplyStyleToRun(StyleDictionary.IdToName[FormatStyle.Link], run);
                        }
                    }
                    renderer.PopTo(hyperlink);

                    renderer.CurrentFigureLinkListIndex = null;
                }
            }
        }