Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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());
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        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);
        }