private Phrase Render(Markdig.Extensions.Tables.Table tableBlock) { int maxColumns = 0; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { maxColumns = Math.Max(maxColumns, row.Count); } var table = new PdfPTable(maxColumns); foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { foreach (Markdig.Extensions.Tables.TableCell cell in row) { var phrase = new Phrase(); foreach (var blockpar in cell) { var par = blockpar as Markdig.Syntax.ParagraphBlock; var blockPhrase = CreateFormatted(par.Inline, ParagraphFont, 0, new iTextSharp.text.Color(0)); phrase.Add(blockPhrase); } table.AddCell(phrase); } } var tablePhrase = new Phrase(); tablePhrase.Add(table); return(tablePhrase); }
private string Render(Markdig.Extensions.Tables.Table tableBlock) { int maxColumns = 0; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { maxColumns = Math.Max(maxColumns, row.Count); } var table = ""; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { foreach (Markdig.Extensions.Tables.TableCell cell in row) { var phrase = ""; foreach (var blockpar in cell) { var par = blockpar as Markdig.Syntax.ParagraphBlock; var blockPhrase = CreateFormatted(par.Inline); phrase += blockPhrase + " "; } table += phrase + " "; } table += "\n"; } return(table); }
public static Dictionary <string, List <string> > ToTable(this Markdig.Extensions.Tables.Table tableBlock) { var table = new Dictionary <string, List <string> >(); var indexes = new Dictionary <int, string>(); foreach (var blockrow in tableBlock) { var row = blockrow as Markdig.Extensions.Tables.TableRow; int indexCol = 0; foreach (var blockcell in row) { var cell = blockcell as Markdig.Extensions.Tables.TableCell; foreach (var blockpar in cell) { var par = blockpar as Markdig.Syntax.ParagraphBlock; var name = par.ToMarkdownString().Trim(); if (row.IsHeader) { indexes[indexCol] = name; table[name] = new List <string>(); } else { table[indexes[indexCol]].Add(name); } } indexCol++; } } return(table); }
public static string ToMarkdownString(this Markdig.Extensions.Tables.Table tableBlock) { var ret = string.Empty; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { var line = "|"; foreach (Markdig.Extensions.Tables.TableCell cell in row) { foreach (Markdig.Syntax.ParagraphBlock block in cell) { line += block.ToMarkdownString().Replace("\n", ""); } line += "|"; } if (row.IsHeader) { line += "\n|"; for (int i = 0; i < row.Count; i++) { line += "---|"; } } ret += line + "\n"; } return(ret); }
public void ParseItemProperties(string source, Item item, Markdig.Extensions.Tables.Table table) { Markdig.Extensions.Tables.TableRow firstRow = table.FirstOrDefault() as Markdig.Extensions.Tables.TableRow; var matrix = new string[firstRow.Count, table.Count]; int y = 0; foreach (Markdig.Extensions.Tables.TableRow row in table) { int x = 0; foreach (Markdig.Extensions.Tables.TableCell col in row) { ParseItemProperties(source, item, col); matrix[x, y] = col.ToMarkdownString(); x++; } y++; } //Debug.WriteLine(matrix); }
public void Export(string targetPath) { using (this.m_Document = WordprocessingDocument.CreateFromTemplate(this.TemplatePath)) { var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().UseGridTables().UsePipeTables().Build(); var markdown = Markdown.Parse(this.Source, pipeline); foreach (Block block in markdown) { if (block is HeadingBlock) { HeadingBlock b = block as HeadingBlock; string s = ""; foreach (Inline run in b.Inline) { s += this.Source.Substring(run.Span.Start, run.Span.Length); } this.m_Document.MainDocumentPart.Document.Body.Append(this.MakeHeaderParagprah(s.ToString(), b.Level)); } if (block is ParagraphBlock) { this.m_Document.MainDocumentPart.Document.Body.Append(this.ParseParagaph(block as ParagraphBlock)); } if (block is ListBlock) { this.m_Document.MainDocumentPart.Document.Body.Append(this.ParseList(block as ListBlock)); } if (block is Markdig.Extensions.Tables.Table) { //TODO Header row Markdig.Extensions.Tables.Table b = block as Markdig.Extensions.Tables.Table; Table table = this.MakeTable(); foreach (Block rowBlock in b) { Markdig.Extensions.Tables.TableRow mdRow = rowBlock as Markdig.Extensions.Tables.TableRow; TableRow row = this.MakeTableRow(); foreach (Block cellBlock in mdRow) { Markdig.Extensions.Tables.TableCell mdCell = cellBlock as Markdig.Extensions.Tables.TableCell; TableCell cell = this.MakTableCell(); foreach (Block content in mdCell) { if (content is ParagraphBlock) { cell.Append(this.ParseParagaph(content as ParagraphBlock)); } } if (mdCell.Count == 0) { cell.Append(this.MakeParagraph()); } row.Append(cell); } table.Append(row); } this.m_Document.MainDocumentPart.Document.Body.Append(table); } if (block is BlockQuote) { } if (block is CodeBlock) { } } this.m_Document.PackageProperties.Creator = this.DocumentInfo.First(di => di.Name == "Creator").Value; this.m_Document.PackageProperties.Category = this.DocumentInfo.First(di => di.Name == "Category").Value; this.m_Document.PackageProperties.Description = this.DocumentInfo.First(di => di.Name == "Description").Value; this.m_Document.PackageProperties.Subject = this.DocumentInfo.First(di => di.Name == "Subject").Value; this.m_Document.PackageProperties.Title = this.DocumentInfo.First(di => di.Name == "Title").Value; //// Save changes to the main document part. this.m_Document.MainDocumentPart.Document.Save(); var doc2 = this.m_Document.SaveAs(targetPath) as WordprocessingDocument; doc2.MainDocumentPart.DocumentSettingsPart.Settings.PrependChild <UpdateFieldsOnOpen>(new UpdateFieldsOnOpen() { Val = new OnOffValue(true) }); doc2.MainDocumentPart.DocumentSettingsPart.Settings.Save(); this.m_Document.Close(); doc2.Close(); } }
private void Render(Markdig.Extensions.Tables.Table tableBlock) { var scroll = new ScrollView() { HorizontalScrollBarVisibility = ScrollBarVisibility.Default, Orientation = ScrollOrientation.Horizontal }; var grid = new Grid() { HorizontalOptions = LayoutOptions.Start, Margin = 0, Padding = 1, BackgroundColor = Theme.TableHeader.BackgroundColor, RowSpacing = 1, ColumnSpacing = 1 }; int top = 0; int maxColumns = 0; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { int left = 0; foreach (Markdig.Extensions.Tables.TableCell cell in row) { foreach (var blockpar in cell) { var par = blockpar as Markdig.Syntax.ParagraphBlock; var style = row.IsHeader ? Theme.TableHeader : Theme.Paragraph; var frame = new Frame { BackgroundColor = style.BackgroundColor, Margin = 1, Padding = 5, }; var label = new Label { FormattedText = CreateFormatted(par.Inline, style.FontFamily, style.Attributes, style.ForegroundColor, style.BackgroundColor, style.FontSize), HorizontalOptions = LayoutOptions.CenterAndExpand, BackgroundColor = style.BackgroundColor, VerticalTextAlignment = TextAlignment.Center, HorizontalTextAlignment = TextAlignment.Center, }; frame.Content = label; AttachLinks(label); grid.Children.Add(frame, left, top); } left++; maxColumns = Math.Max(maxColumns, left); } grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); top++; } for (int i = 0; i < maxColumns; i++) { grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); } double?gridHeight = null; grid.SizeChanged += (object sender, EventArgs e) => { if (gridHeight == null) { gridHeight = grid.HeightRequest = grid.Height; } else { grid.HeightRequest = gridHeight.Value; } }; //grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); //grid.RowDefinitions.Add(new RowDefinition { Height= new GridLength(1, GridUnitType.Star) }); stack.Children.Add(scroll); scroll.Content = grid; //grid.WidthRequest = 1000; scroll.ForceLayout(); this.UpdateChildrenLayout(); }
private void Render(Markdig.Extensions.Tables.Table tableBlock) { var scroll = new ScrollView() { HorizontalScrollBarVisibility = ScrollBarVisibility.Default, Orientation = ScrollOrientation.Horizontal }; var grid = new Grid() { HorizontalOptions = LayoutOptions.Start, Margin = 0, Padding = 1, BackgroundColor = Theme.TableHeader.BackgroundColor, RowSpacing = 1, ColumnSpacing = 1 }; int maxColumns = 0; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { maxColumns = Math.Max(maxColumns, row.Count); grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); } for (int i = 0; i < maxColumns; i++) { grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); } int top = 0; foreach (Markdig.Extensions.Tables.TableRow row in tableBlock) { int left = 0; foreach (Markdig.Extensions.Tables.TableCell cell in row) { foreach (var blockpar in cell) { var par = blockpar as Markdig.Syntax.ParagraphBlock; var style = row.IsHeader ? Theme.TableHeader : Theme.TableCell; var frame = new Frame { BackgroundColor = style.BackgroundColor, Margin = 1, Padding = 5, }; //var align = tableBlock.ColumnDefinitions[left].Alignment; var layoutOptions = row.IsHeader ? LayoutOptions.CenterAndExpand : LayoutOptions.StartAndExpand; var textAlignment = row.IsHeader ? TextAlignment.Center : TextAlignment.Start; var label = new Label { FormattedText = CreateFormatted(par.Inline, style.FontFamily, style.Attributes, style.ForegroundColor, style.BackgroundColor, style.FontSize), HorizontalOptions = layoutOptions, BackgroundColor = style.BackgroundColor, LineBreakMode = LineBreakMode.WordWrap, VerticalTextAlignment = TextAlignment.Center, HorizontalTextAlignment = textAlignment, }; frame.Content = label; AttachLinks(label); grid.Children.Add(frame, left, top); } left++; } top++; } stack.Children.Add(scroll); scroll.Content = grid; }