Esempio n. 1
0
        protected override void Write(OpenXMLRenderer renderer, CodeBlock obj)
        {
            renderer.PushParagraphFormat(FormatStyle.CodeBlock);
            var paragraph = renderer.PushNewParagraph();

            if (obj.Inline != null)
            {
                // there was a post-processor which has already processed the lines in this code block
                renderer.WriteChildren(obj.Inline);
            }
            else // there was no post-processor - we have to do the writing of the code lines
            {
                // original code: renderer.WriteLeafRawLines(obj); // Expand this call directly here in order to be able to include tags
                var lines = obj.Lines;
                if (lines.Lines != null)
                {
                    var slices = lines.Lines;
                    for (var i = 0; i < lines.Count; i++)
                    {
                        var run = renderer.Push(new Run(new DocumentFormat.OpenXml.Wordprocessing.Text()
                        {
                            Text = slices[i].Slice.ToString(), Space = SpaceProcessingModeValues.Preserve
                        }));
                        renderer.PopTo(run);
                        if (i < lines.Count - 1)
                        {
                            run = renderer.Push(new Run(new Break()));
                            renderer.PopTo(run);
                        }
                    }
                }
            }
            renderer.PopTo(paragraph);
            renderer.PopParagraphFormat();
        }
Esempio n. 2
0
        protected override void Write(OpenXMLRenderer renderer, ParagraphBlock obj)
        {
            var paragraph = renderer.PushNewParagraph();

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

            renderer.AddBookmarkIfNeccessary(obj, paragraph);
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        protected override void Write(OpenXMLRenderer renderer, Markdig.Extensions.Figures.FigureCaption obj)
        {
            if (null != renderer.FigureCaptionList)
            {
                var idx = renderer.FigureCaptionList.FindIndex(x => object.ReferenceEquals(x.FigureCaption, obj));
                if (idx >= 0)
                {
                    renderer.CurrentFigureCaptionListIndex = idx;
                }
            }

            renderer.PushParagraphFormat(FormatStyle.Caption);
            var paragraph = renderer.PushNewParagraph();

            renderer.WriteLeafInline(obj);
            renderer.PopTo(paragraph);
            renderer.PopParagraphFormat();
            renderer.CurrentFigureCaptionListIndex = null;
        }
Esempio n. 5
0
        protected override void Write(OpenXMLRenderer renderer, ThematicBreakBlock obj)
        {
            var paragraph      = renderer.PushNewParagraph();
            var paraProperties = paragraph.ChildElements.FirstOrDefault() as ParagraphProperties;

            if (null == paraProperties)
            {
                paraProperties = paragraph.AppendChild(new ParagraphProperties());
            }

            var paraBorders = new ParagraphBorders();
            var bottom      = new BottomBorder()
            {
                Val = BorderValues.Single, Color = "auto", Size = 12, Space = 1
            };

            paraBorders.Append(bottom);
            paraProperties.Append(paraBorders);
            renderer.PopTo(paragraph);
        }
Esempio n. 6
0
        protected override void Write(OpenXMLRenderer renderer, MathBlock obj)
        {
            string text = string.Empty; // obj.Content.Text.Substring(obj.Content.Start, obj.Content.Length);

            for (int i = 0; i < obj.Lines.Count; ++i)
            {
                var l = obj.Lines.Lines[i];
                text += l.Slice.Text.Substring(l.Slice.Start, l.Slice.Length);
            }

            if (string.IsNullOrEmpty(text))
            {
                return;
            }

            TexFormula formula = null;

            try
            {
                formula = _formulaParser.Parse(text);
            }
            catch (Exception)
            {
                return;
            }

            var mathRenderer = new MathRendering.OpenXMLWpfMathRenderer();

            var mathObj = (DocumentFormat.OpenXml.OpenXmlCompositeElement)mathRenderer.Render(formula.RootAtom);

            var wordParagraph = renderer.PushNewParagraph(); // this is a Word paragraph

            renderer.Push(new Paragraph());                  // Attention this is a __Math__ paragraph!
            renderer.Push(mathObj);
            renderer.PopTo(wordParagraph);
        }