public static HtmlToPdfPage CreateIndex(IList <HtmlToPdfPage> pages) { var page = new HtmlToPdfPage(); page.Type = HtmlToPdfPageType.Index; page.Header = "Index"; var sb = new StringBuilder(); sb.Append("<table class='index'>"); var copy = ""; foreach (var item in pages.Where(x => x.Type != HtmlToPdfPageType.FrontPage && !string.IsNullOrEmpty(x.Header)).OrderBy(x => x.Index)) { if (copy != item.Header) { sb.Append($"<tr class='clickrow'>"); sb.Append($"<td style='width:90%;'><a href='#{item.Index}'>{item.Header}</a></td>"); sb.AppendLine($"<td><a href='#{item.Index}'>{item.Index}</a></td>"); sb.Append($"</tr>"); } copy = item.Header; } sb.Append("</table>"); page.Body = sb.ToString(); return(page); }
public static IList <HtmlToPdfPage> CheckAlinea(string alinea, int pagenumbers, IList <HtmlToPdfPage> pages, MatchCollection header) { HtmlToPdfPage page = null; foreach (var head in header) { if (alinea.Length > 3700) { var split = alinea.LastIndexOf(".", 3700); var newpage = alinea.Substring(split + 1); alinea = alinea.Remove(split + 1); pages.Add(page = new HtmlToPdfPage { Header = head.ToString(), Body = alinea, Type = HtmlToPdfPageType.Text, Index = pagenumbers, }); pagenumbers = pagenumbers + 1; var fakeheader = Regex.Matches("", ""); CheckAlinea(newpage, pagenumbers, pages, fakeheader); } else { pages.Add(page = new HtmlToPdfPage { Header = head.ToString(), Body = alinea, Type = HtmlToPdfPageType.Text, Index = pagenumbers, }); pagenumbers = pagenumbers + 1; } } return(pages); }