private static void FillChaptersByNcx(IList <Chapter> chapters, Ncx ncx, string opfDirectory)
 {
     if (chapters != null && ncx != null && ncx.NavMap != null && ncx.NavMap.NavPoints != null)
     {
         foreach (var navPoint in ncx.NavMap.NavPoints)
         {
             chapters.Add(GetChapterFromNavPoint(navPoint, opfDirectory));
         }
     }
 }
Beispiel #2
0
        private void GenerateTocNcx(RuntimeSettings settings, ILog log)
        {
            log.Info("Creating epub toc.ncx...");
            var output = settings.OutputDirectory.Combine("epubtemp\\OPS\\toc.ncx");
            Ncx toc    = new Ncx
            {
                Version = "2005-1",
                Xmlns   = "http://www.daisy.org/z3986/2005/ncx/",
                Lang    = "en",
                Head    = new Head
                {
                    Meta = new List <Meta>
                    {
                        new Meta
                        {
                            Name    = "dtb:uid",
                            Content = "book"
                        },
                    }
                },
                DocTitle = new DocTitle
                {
                    Text = settings.Configuration.Metadata.Title
                },
                NavMap = new NavMap
                {
                    NavPoint = new NavPoint
                    {
                        Id       = "root",
                        NavLabel = new NavLabel
                        {
                            Text = "Start"
                        },
                        Content = new Content
                        {
                            Src = "nav.xhtml",
                        },
                        NavPoints = FillNavPoints(settings),
                    }
                }
            };

            var namespaces = new List <(string prefix, string namespac)>
            {
                ("", "http://www.daisy.org/z3986/2005/ncx/"),
                ("ncx", "http://www.daisy.org/z3986/2005/ncx/")
            };

            output.SerializeXml(toc, log, namespaces);
        }
Beispiel #3
0
        public static Ncx Read(Stream stream)
        {
            Ncx result = null;

            using (var streamReader = new StreamReader(stream))
            {
                string xmlStr   = streamReader.ReadToEnd();
                var    document = XElement.Parse(xmlStr.FixXml());

                var xNamespace = document.GetDefaultNamespace();
                result = ParseNcx(document) ?? throw new InvalidDataException("invalid data of ncx file: ncx");
            }
            return(result);
        }
Beispiel #4
0
        private static Ncx ParseNcx(XElement element)
        {
            Ncx result = null;

            if (element != null && element.Name.LocalName == ELEMENT_NCX)
            {
                var xNamespace = element.Name.Namespace;

                result = new Ncx
                {
                    Version  = element.Attribute(ATTRIBUTE_VERSION)?.Value,
                    Language = element.Attribute(Const.ATTRIBUTE_LANGUAGE)?.Value,
                    NavMap   = ParseNavMap(element.Element(xNamespace + ELEMENT_NAVMAP)),
                };
            }

            return(result);
        }
Beispiel #5
0
 public static void Write(Ncx file, Stream stream)
 {
 }