protected override void Write(OpenXMLRenderer renderer, ParagraphBlock obj) { var paragraph = renderer.PushNewParagraph(); renderer.WriteLeafInline(obj); renderer.PopTo(paragraph); renderer.AddBookmarkIfNeccessary(obj, paragraph); }
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); }
/// <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; } } }