private static List <EpubNavigationItemRef> GetNavigationItems(EpubBookRef bookRef, Epub3NavOl epub3NavOl) { List <EpubNavigationItemRef> result = new List <EpubNavigationItemRef>(); if (epub3NavOl != null && epub3NavOl.Lis != null) { foreach (Epub3NavLi epub3NavLi in epub3NavOl.Lis) { if (epub3NavLi != null && (epub3NavLi.Anchor != null || epub3NavLi.Span != null)) { if (epub3NavLi.Anchor != null) { Epub3NavAnchor navAnchor = epub3NavLi.Anchor; EpubNavigationItemRef navigationItemRef = EpubNavigationItemRef.CreateAsLink(); navigationItemRef.Title = GetFirstNonEmptyHeader(navAnchor.Text, navAnchor.Title, navAnchor.Alt); navigationItemRef.Link = new EpubNavigationItemLink(navAnchor.Href); navigationItemRef.HtmlContentFileRef = GetHtmlContentFileRef(bookRef, navigationItemRef.Link.ContentFileName); navigationItemRef.NestedItems = GetNavigationItems(bookRef, epub3NavLi.ChildOl); result.Add(navigationItemRef); } else if (epub3NavLi.Span != null) { Epub3NavSpan navSpan = epub3NavLi.Span; EpubNavigationItemRef navigationItemRef = EpubNavigationItemRef.CreateAsHeader(); navigationItemRef.Title = GetFirstNonEmptyHeader(navSpan.Text, navSpan.Title, navSpan.Alt); navigationItemRef.NestedItems = GetNavigationItems(bookRef, epub3NavLi.ChildOl); result.Add(navigationItemRef); } } } } return(result); }
private static List <EpubNavigationItemRef> GetNavigationItems(EpubBookRef bookRef, Epub3Nav epub3Nav) { List <EpubNavigationItemRef> result; if (epub3Nav != null) { if (epub3Nav.Head != null) { result = new List <EpubNavigationItemRef>(); EpubNavigationItemRef navigationItemRef = EpubNavigationItemRef.CreateAsHeader(); navigationItemRef.Title = epub3Nav.Head; navigationItemRef.NestedItems = GetNavigationItems(bookRef, epub3Nav.Ol); result.Add(navigationItemRef); } else { result = GetNavigationItems(bookRef, epub3Nav.Ol); } } else { result = new List <EpubNavigationItemRef>(); } return(result); }
private static void PrintNavigationItem(EpubNavigationItemRef navigationItemRef, int identLevel) { Console.Write(new string(' ', identLevel * 2)); Console.WriteLine(navigationItemRef.Title); foreach (EpubNavigationItemRef nestedNavigationItemRef in navigationItemRef.NestedItems) { PrintNavigationItem(nestedNavigationItemRef, identLevel + 1); } }
private static string PrintNavigationItem(EpubNavigationItemRef navigationItemRef, int identLevel) { StringBuilder result = new StringBuilder(); result.Append(new string(' ', identLevel * 2)); result.AppendLine(navigationItemRef.Title); foreach (EpubNavigationItemRef nestedNavigationItemRef in navigationItemRef.NestedItems) { result.Append(PrintNavigationItem(nestedNavigationItemRef, identLevel + 1)); } return(result.ToString()); }
/// <summary> /// Use recursion to loop down any sub chapters. Note: none of the epub books I've used to date have sub chapters. /// </summary> /// <param name="chapter"></param> /// <param name="subchapterContent"></param> /// <param name="IsFirst"></param> /// <returns></returns> private string BuildSubChapters(EpubNavigationItemRef chapter, string subchapterContent, bool IsFirst = false) { if (!IsFirst) // don't need to do the first on as it is the main chapter that has already been processed { subchapterContent += chapter.HtmlContentFileRef.ReadContentAsText(); //.FinalHtmlContent;//.ReadHtmlContent(); } foreach (var subChapter in chapter.NestedItems) { subchapterContent += BuildSubChapters(subChapter, subchapterContent); } return(subchapterContent); }
private static List <EpubNavigationItemRef> GetNavigationItems(EpubBookRef bookRef, List <Epub2NcxNavigationPoint> navigationPoints) { List <EpubNavigationItemRef> result = new List <EpubNavigationItemRef>(); if (navigationPoints != null) { foreach (Epub2NcxNavigationPoint navigationPoint in navigationPoints) { EpubNavigationItemRef navigationItemRef = EpubNavigationItemRef.CreateAsLink(); navigationItemRef.Title = navigationPoint.NavigationLabels.First().Text; navigationItemRef.Link = new EpubNavigationItemLink(navigationPoint.Content.Source); navigationItemRef.HtmlContentFileRef = GetHtmlContentFileRef(bookRef, navigationItemRef.Link.ContentFileName); navigationItemRef.NestedItems = GetNavigationItems(bookRef, navigationPoint.ChildNavigationPoints); result.Add(navigationItemRef); } } return(result); }