예제 #1
0
        /// <summary>
        /// Add and convert generic secondary body section
        /// </summary>
        /// <param name="bookStructureManager"></param>
        /// <param name="bodyItem"></param>
        private void AddSecondaryBody(BookStructureManager bookStructureManager, BodyItem bodyItem)
        {
            string docTitle = string.Empty;

            if (string.IsNullOrEmpty(bodyItem.Name))
            {
                if (bodyItem.Title != null)
                {
                    docTitle = bodyItem.Title.ToString();
                }
            }
            else
            {
                docTitle = bodyItem.Name;
            }
            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            var sectionDocument = new BaseXHTMLFileV2
            {
                Id                   = docTitle,
                GuideRole            = GuideTypeEnum.Text,
                Type                 = SectionTypeEnum.Text,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                Content              = new Div(BaseXHTMLFileV2.Compatibility),
                NavigationParent     = null,
                NotPartOfNavigation  = false,
                FileName             = string.Format("section{0}.xhtml", ++_sectionCounter)
            };

            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop       = _commonSettings.CapitalDrop,
                    Images            = _images,
                    MaxSize           = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                                                                   new TitleConverterParamsV2 {
                    Settings = converterSettings, TitleLevel = 1
                }));
            }
            bookStructureManager.AddBookPage(sectionDocument);


            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                AddSection(bookStructureManager, section, sectionDocument, false);
            }
        }
예제 #2
0
        private void AddSection(BookStructureManager bookStructureManager, SectionItem section, BaseXHTMLFileV2 navParent, bool fbeNotesSection)
        {
            string docTitle = string.Empty;

            if (section.Title != null)
            {
                docTitle = section.Title.ToString();
            }
            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            BaseXHTMLFileV2 sectionDocument      = null;
            bool            firstDocumentOfSplit = true;
            var             converterSettings    = new ConverterOptionsV2
            {
                CapitalDrop       = !fbeNotesSection && _commonSettings.CapitalDrop,
                Images            = _images,
                MaxSize           = _maxSize,
                ReferencesManager = _referencesManager,
            };
            var sectionConverter = new SectionConverterV2
            {
                LinkSection    = fbeNotesSection,
                RecursionLevel = GetRecursionLevel(navParent),
                Settings       = converterSettings
            };

            foreach (var subitem in sectionConverter.Convert(section))
            {
                sectionDocument = new BaseXHTMLFileV2
                {
                    PageTitle            = docTitle,
                    FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                    GuideRole            = (navParent == null) ? GuideTypeEnum.Text : navParent.GuideRole,
                    Type             = (navParent == null) ? SectionTypeEnum.Text : navParent.Type,
                    Content          = subitem,
                    NavigationParent = navParent,
                    FileName         = string.Format("section{0}.xhtml", ++_sectionCounter)
                };
                if (!firstDocumentOfSplit || (sectionDocument.Type == SectionTypeEnum.Links))
                {
                    sectionDocument.NotPartOfNavigation = true;
                }
                firstDocumentOfSplit = false;
                bookStructureManager.AddBookPage(sectionDocument);
            }
            Logger.Log.Debug("Adding sub-sections");
            foreach (var subSection in section.SubSections)
            {
                AddSection(bookStructureManager, subSection, sectionDocument, fbeNotesSection);
            }
        }
예제 #3
0
        /// <summary>
        /// Add and convert FBE style generated notes sections
        /// </summary>
        /// <param name="epubFile"></param>
        /// <param name="bodyItem"></param>
        private void AddFbeNotesBody(EPubFileV2 epubFile, BodyItem bodyItem)
        {
            string docTitle = bodyItem.Name;

            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            var sectionDocument = new BaseXHTMLFileV2
            {
                PageTitle            = docTitle,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                GuideRole            = GuideTypeEnum.Glossary,
                Type                = SectionTypeEnum.Links,
                Content             = new Div(BaseXHTMLFileV2.Compatibility),
                NavigationParent    = null,
                NotPartOfNavigation = true,
                FileName            = string.Format("section{0}.xhtml", ++_sectionCounter),
            };

            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop       = false,
                    Images            = _images,
                    MaxSize           = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                                                                   new TitleConverterParamsV2 {
                    Settings = converterSettings, TitleLevel = 1
                }));
            }
            epubFile.AddXHTMLFile(sectionDocument);

            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                AddSection(epubFile, section, sectionDocument, true);
            }
        }
예제 #4
0
        public void Convert(EPubFileV2 epubFile, FB2File fb2File)
        {
            // create second title page
            if ((fb2File.MainBody.Title != null) && (!string.IsNullOrEmpty(fb2File.MainBody.Title.ToString())))
            {
                string docTitle = fb2File.MainBody.Title.ToString();
                Logger.Log.DebugFormat("Adding section : {0}", docTitle);
                BaseXHTMLFileV2 addTitlePage = new BaseXHTMLFileV2
                {
                    GuideRole = GuideTypeEnum.TitlePage,
                    Content = new Div(BaseXHTMLFileV2.Compatibility),
                    Type = SectionTypeEnum.Text,
                    FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                    NavigationParent = null,
                    FileName = string.Format("section{0}.xhtml", ++_sectionCounter),
                    NotPartOfNavigation = true,
                    PageTitle = docTitle,
                };
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop = _commonSettings.CapitalDrop,
                    Images = _images,
                    MaxSize = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                addTitlePage.Content.Add(titleConverter.Convert(fb2File.MainBody.Title,
                    new TitleConverterParamsV2 { Settings = converterSettings, TitleLevel = 2 }));
                epubFile.AddXHTMLFile(addTitlePage);
            }

            BaseXHTMLFileV2 mainDocument = null;
            if (!string.IsNullOrEmpty(fb2File.MainBody.Name))
            {
                string docTitle = fb2File.MainBody.Name;
                Logger.Log.DebugFormat("Adding section : {0}", docTitle);
                mainDocument = new BaseXHTMLFileV2
                {
                    PageTitle = docTitle,
                    GuideRole = GuideTypeEnum.Text,
                    Content = new Div(BaseXHTMLFileV2.Compatibility),
                    Type = SectionTypeEnum.Text,
                    FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                    NavigationParent = null,
                    FileName = string.Format("section{0}.xhtml", ++_sectionCounter)
                };
                epubFile.AddXHTMLFile(mainDocument);
            }

            if ((fb2File.MainBody.ImageName != null) && !string.IsNullOrEmpty(fb2File.MainBody.ImageName.HRef))
            {
                if (mainDocument == null)
                {
                    string newDocTitle = ((fb2File.MainBody.Title != null) && (!string.IsNullOrEmpty(fb2File.MainBody.Title.ToString()))) ? fb2File.MainBody.Title.ToString() : "main";
                    mainDocument = new BaseXHTMLFileV2
                    {
                        PageTitle = newDocTitle,
                        GuideRole = GuideTypeEnum.Text,
                        Content = new Div(BaseXHTMLFileV2.Compatibility),
                        NavigationParent = null,
                        Type = SectionTypeEnum.Text,
                        FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                        FileName = string.Format("section{0}.xhtml", ++_sectionCounter)
                    };
                    epubFile.AddXHTMLFile(mainDocument);
                }
                if (_images.IsImageIdReal(fb2File.MainBody.ImageName.HRef))
                {
                    var enclosing = new Div(HTMLElementType.XHTML11); // we use the enclosing so the user can style center it
                    var converterSettings = new ConverterOptionsV2
                    {
                        CapitalDrop = _commonSettings.CapitalDrop,
                        Images = _images,
                        MaxSize = _maxSize,
                        ReferencesManager = _referencesManager,
                    };

                    var imageConverter = new ImageConverterV2();
                    enclosing.Add(imageConverter.Convert(fb2File.MainBody.ImageName, new ImageConverterParamsV2 { Settings = converterSettings }));
                    SetClassType(enclosing, ElementStylesV2.BodyImage);
                    mainDocument.Content.Add(enclosing);
                }


            }
            foreach (var ep in fb2File.MainBody.Epigraphs)
            {
                if (mainDocument == null)
                {
                    string newDocTitle = ((fb2File.MainBody.Title != null) && (!string.IsNullOrEmpty(fb2File.MainBody.Title.ToString()))) ? fb2File.MainBody.Title.ToString() : "main";
                    mainDocument = new BaseXHTMLFileV2
                    {
                        PageTitle = newDocTitle,
                        GuideRole = GuideTypeEnum.Text,
                        Content = new Div(BaseXHTMLFileV2.Compatibility),
                        NavigationParent = null,
                        Type = SectionTypeEnum.Text,
                        FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                        FileName = string.Format("section{0}.xhtml", ++_sectionCounter)
                    };
                }
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop = _commonSettings.CapitalDrop,
                    Images = _images,
                    MaxSize = _maxSize,
                    ReferencesManager = _referencesManager,
                };

                var epigraphConverter = new MainEpigraphConverterV2();
                mainDocument.Content.Add(epigraphConverter.Convert(ep,
                    new EpigraphConverterParamsV2 { Settings = converterSettings, Level = 1 }));
                epubFile.AddXHTMLFile(mainDocument);
            }

            Logger.Log.Debug("Adding main sections");
            foreach (var section in fb2File.MainBody.Sections)
            {
                AddSection(epubFile, section, mainDocument, false);
            }

            Logger.Log.Debug("Adding secondary bodies");
            foreach (var bodyItem in fb2File.Bodies)
            {
                if (bodyItem == fb2File.MainBody)
                {
                    continue;
                }
                bool fbeNotesSection = FBENotesSection(bodyItem.Name);
                if (fbeNotesSection)
                {
                    AddFbeNotesBody(epubFile, bodyItem);
                }
                else
                {
                    AddSecondaryBody(epubFile, bodyItem);
                }
            }          
        }
예제 #5
0
        /// <summary>
        /// Add and convert generic secondary body section
        /// </summary>
        /// <param name="epubFile"></param>
        /// <param name="bodyItem"></param>
        private void AddSecondaryBody(EPubFileV2 epubFile, BodyItem bodyItem)
        {
            string docTitle = string.Empty;
            if (string.IsNullOrEmpty(bodyItem.Name))
            {
                if (bodyItem.Title != null)
                {
                    docTitle = bodyItem.Title.ToString();
                }
            }
            else
            {
                docTitle = bodyItem.Name;
            }
            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            var sectionDocument = new BaseXHTMLFileV2
            {
                Id = docTitle,
                GuideRole = GuideTypeEnum.Text,
                Type = SectionTypeEnum.Text,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                Content = new Div(BaseXHTMLFileV2.Compatibility),
                NavigationParent = null,
                NotPartOfNavigation = false,
                FileName = string.Format("section{0}.xhtml", ++_sectionCounter)
            };

            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop = _commonSettings.CapitalDrop,
                    Images = _images,
                    MaxSize = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                    new TitleConverterParamsV2 { Settings = converterSettings, TitleLevel = 1 }));
            }
            epubFile.AddXHTMLFile(sectionDocument);


            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                AddSection(epubFile, section, sectionDocument, false);
            }
        }
예제 #6
0
 private void AddSection(EPubFileV2 epubFile, SectionItem section, BaseXHTMLFileV2 navParent, bool fbeNotesSection)
 {
     string docTitle = string.Empty;
     if (section.Title != null)
     {
         docTitle = section.Title.ToString();
     }
     Logger.Log.DebugFormat("Adding section : {0}", docTitle);
     BaseXHTMLFileV2 sectionDocument = null;
     bool firstDocumentOfSplit = true;
     var converterSettings = new ConverterOptionsV2
     {
         CapitalDrop = !fbeNotesSection && _commonSettings.CapitalDrop,
         Images = _images,
         MaxSize = _maxSize,
         ReferencesManager = _referencesManager,
     };
     var sectionConverter = new SectionConverterV2
     {
         LinkSection = fbeNotesSection,
         RecursionLevel = GetRecursionLevel(navParent),
         Settings = converterSettings
     };
     foreach (var subitem in sectionConverter.Convert(section))
     {
         sectionDocument = new BaseXHTMLFileV2
         {
             PageTitle = docTitle,
             FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
             GuideRole = (navParent == null) ? GuideTypeEnum.Text : navParent.GuideRole,
             Type = (navParent == null) ? SectionTypeEnum.Text : navParent.Type,
             Content = subitem,
             NavigationParent = navParent,
             FileName = string.Format("section{0}.xhtml", ++_sectionCounter)
         };
         if (!firstDocumentOfSplit || (sectionDocument.Type == SectionTypeEnum.Links))
         {
             sectionDocument.NotPartOfNavigation = true;
         }
         firstDocumentOfSplit = false;
         epubFile.AddXHTMLFile(sectionDocument);
     }
     Logger.Log.Debug("Adding sub-sections");
     foreach (var subSection in section.SubSections)
     {
         AddSection(epubFile, subSection, sectionDocument, fbeNotesSection);
     }
 }
예제 #7
0
        public void Convert(BookStructureManager bookStructureManager, FB2File fb2File)
        {
            // create second title page
            if ((fb2File.MainBody.Title != null) && (!string.IsNullOrEmpty(fb2File.MainBody.Title.ToString())))
            {
                string docTitle = fb2File.MainBody.Title.ToString();
                Logger.Log.DebugFormat("Adding section : {0}", docTitle);
                BaseXHTMLFileV2 addTitlePage = new BaseXHTMLFileV2
                {
                    GuideRole            = GuideTypeEnum.TitlePage,
                    Content              = new Div(BaseXHTMLFileV2.Compatibility),
                    Type                 = SectionTypeEnum.Text,
                    FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                    NavigationParent     = null,
                    FileName             = string.Format("section{0}.xhtml", ++_sectionCounter),
                    NotPartOfNavigation  = true,
                    PageTitle            = docTitle,
                };
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop       = _commonSettings.CapitalDrop,
                    Images            = _images,
                    MaxSize           = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                addTitlePage.Content.Add(titleConverter.Convert(fb2File.MainBody.Title,
                                                                new TitleConverterParamsV2 {
                    Settings = converterSettings, TitleLevel = 2
                }));
                bookStructureManager.AddTitlePage(addTitlePage);
            }

            BaseXHTMLFileV2 mainDocument = null;

            if (!string.IsNullOrEmpty(fb2File.MainBody.Name))
            {
                string docTitle = fb2File.MainBody.Name;
                Logger.Log.DebugFormat("Adding section : {0}", docTitle);
                mainDocument = new BaseXHTMLFileV2
                {
                    PageTitle            = docTitle,
                    GuideRole            = GuideTypeEnum.Text,
                    Content              = new Div(BaseXHTMLFileV2.Compatibility),
                    Type                 = SectionTypeEnum.Text,
                    FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                    NavigationParent     = null,
                    FileName             = string.Format("section{0}.xhtml", ++_sectionCounter)
                };
                bookStructureManager.AddBookPage(mainDocument);
            }

            if ((fb2File.MainBody.ImageName != null) && !string.IsNullOrEmpty(fb2File.MainBody.ImageName.HRef))
            {
                if (mainDocument == null)
                {
                    string newDocTitle = ((fb2File.MainBody.Title != null) && (!string.IsNullOrEmpty(fb2File.MainBody.Title.ToString()))) ? fb2File.MainBody.Title.ToString() : "main";
                    mainDocument = new BaseXHTMLFileV2
                    {
                        PageTitle            = newDocTitle,
                        GuideRole            = GuideTypeEnum.Text,
                        Content              = new Div(BaseXHTMLFileV2.Compatibility),
                        NavigationParent     = null,
                        Type                 = SectionTypeEnum.Text,
                        FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                        FileName             = string.Format("section{0}.xhtml", ++_sectionCounter)
                    };
                    bookStructureManager.AddBookPage(mainDocument);
                }
                if (_images.IsImageIdReal(fb2File.MainBody.ImageName.HRef))
                {
                    var enclosing         = new Div(HTMLElementType.XHTML11); // we use the enclosing so the user can style center it
                    var converterSettings = new ConverterOptionsV2
                    {
                        CapitalDrop       = _commonSettings.CapitalDrop,
                        Images            = _images,
                        MaxSize           = _maxSize,
                        ReferencesManager = _referencesManager,
                    };

                    var imageConverter = new ImageConverterV2();
                    enclosing.Add(imageConverter.Convert(fb2File.MainBody.ImageName, new ImageConverterParamsV2 {
                        Settings = converterSettings
                    }));
                    SetClassType(enclosing, ElementStylesV2.BodyImage);
                    mainDocument.Content.Add(enclosing);
                }
            }
            foreach (var ep in fb2File.MainBody.Epigraphs)
            {
                if (mainDocument == null)
                {
                    string newDocTitle = ((fb2File.MainBody.Title != null) && (!string.IsNullOrEmpty(fb2File.MainBody.Title.ToString()))) ? fb2File.MainBody.Title.ToString() : "main";
                    mainDocument = new BaseXHTMLFileV2
                    {
                        PageTitle            = newDocTitle,
                        GuideRole            = GuideTypeEnum.Text,
                        Content              = new Div(BaseXHTMLFileV2.Compatibility),
                        NavigationParent     = null,
                        Type                 = SectionTypeEnum.Text,
                        FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                        FileName             = string.Format("section{0}.xhtml", ++_sectionCounter)
                    };
                }
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop       = _commonSettings.CapitalDrop,
                    Images            = _images,
                    MaxSize           = _maxSize,
                    ReferencesManager = _referencesManager,
                };

                var epigraphConverter = new MainEpigraphConverterV2();
                mainDocument.Content.Add(epigraphConverter.Convert(ep,
                                                                   new EpigraphConverterParamsV2 {
                    Settings = converterSettings, Level = 1
                }));
                bookStructureManager.AddBookPage(mainDocument);
            }

            Logger.Log.Debug("Adding main sections");
            foreach (var section in fb2File.MainBody.Sections)
            {
                AddSection(bookStructureManager, section, mainDocument, false);
            }

            Logger.Log.Debug("Adding secondary bodies");
            foreach (var bodyItem in fb2File.Bodies)
            {
                if (bodyItem == fb2File.MainBody)
                {
                    continue;
                }
                bool fbeNotesSection = FBENotesSection(bodyItem.Name);
                if (fbeNotesSection)
                {
                    AddFbeNotesBody(bookStructureManager, bodyItem);
                }
                else
                {
                    AddSecondaryBody(bookStructureManager, bodyItem);
                }
            }
        }
        /// <summary>
        /// Add and convert FBE style generated notes sections
        /// </summary>
        /// <param name="bookStructureManager"></param>
        /// <param name="bodyItem"></param>
        private void AddFbeNotesBody(BookStructureManager bookStructureManager, BodyItem bodyItem)
        {
            string docTitle = bodyItem.Name;
            Logger.Log.DebugFormat("Adding section : {0}", docTitle);
            var sectionDocument = new BaseXHTMLFileV2
            {
                PageTitle = docTitle,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                GuideRole = GuideTypeEnum.Glossary,
                Type = SectionTypeEnum.Links,
                Content = new Div(BaseXHTMLFileV2.Compatibility),
                NavigationParent = null,
                NotPartOfNavigation = true,
                FileName = string.Format("section{0}.xhtml", ++_sectionCounter),

            };
            if (bodyItem.Title != null)
            {
                var converterSettings = new ConverterOptionsV2
                {
                    CapitalDrop = false,
                    Images = _images,
                    MaxSize = _maxSize,
                    ReferencesManager = _referencesManager,
                };
                var titleConverter = new TitleConverterV2();
                sectionDocument.Content.Add(titleConverter.Convert(bodyItem.Title,
                    new TitleConverterParamsV2 { Settings = converterSettings, TitleLevel = 1 }));
            }
            bookStructureManager.AddBookPage(sectionDocument);

            Logger.Log.Debug("Adding sub-sections");
            foreach (var section in bodyItem.Sections)
            {
                AddSection(bookStructureManager, section, sectionDocument, true);
            }
        }
예제 #9
0
 private void ConvertAnnotation(ItemTitleInfo titleInfo, EPubFileV2 epubFile)
 {
     if (titleInfo.Annotation != null)
     {
         var desc = new Description
         {
             DescInfo = titleInfo.Annotation.ToString(),
         };
         epubFile.BookInformation.Description = desc;
         epubFile.AnnotationPage = new AnnotationPageFileV2();
         var converterSettings = new ConverterOptionsV2
         {
             CapitalDrop = Settings.CommonSettings.CapitalDrop,
             Images = Images,
             MaxSize = Settings.V2Settings.HTMLFileMaxSize,
             ReferencesManager = _referencesManager,
         };
         var annotationConverter = new AnnotationConverterV2();
         epubFile.AnnotationPage.BookAnnotation = (Div)annotationConverter.Convert(titleInfo.Annotation,
            new AnnotationConverterParamsV2 { Settings = converterSettings, Level = 1 });
     }
 }
예제 #10
0
        /// <summary>
        /// Passes FB2 info to the EPub file to be added at the end of the book
        /// </summary>
        /// <param name="epubFile">destination epub object</param>
        /// <param name="fb2File">source fb2 object</param>
        private void PassFb2InfoToEpub(EPubFileV2 epubFile, FB2File fb2File)
        {
            if (!Settings.ConversionSettings.Fb2Info)
            {
                return;
            }
            var infoDocument = new BaseXHTMLFileV2
            {
                Id = "FB2 Info",
                Type = SectionTypeEnum.Text,
                FileEPubInternalPath = EPubInternalPath.GetDefaultLocation(DefaultLocations.DefaultTextFolder),
                FileName = "fb2info.xhtml",
                GuideRole = GuideTypeEnum.Notes,
                NotPartOfNavigation = true
            };

            var converterSettings = new ConverterOptionsV2
            {
                CapitalDrop = false,
                Images = Images,
                MaxSize = Settings.V2Settings.HTMLFileMaxSize,
                ReferencesManager = _referencesManager,
            };
            var infoConverter = new Fb2EpubInfoConverterV2();
            infoDocument.Content = infoConverter.Convert(fb2File, converterSettings);

            epubFile.AddXHTMLFile(infoDocument);
        }
예제 #11
0
        public HTMLItem Convert(FB2File fb2File, ConverterOptionsV2 settings)
        {
            if (fb2File == null)
            {
                throw new ArgumentNullException("fb2File");
            }
            var info = new Div(HTMLElementType.XHTML11);
            var header = new H3(HTMLElementType.XHTML11);
            header.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = "FB2 document info" });
            info.Add(header);
            if (fb2File.DocumentInfo != null)
            {
                if ( !string.IsNullOrEmpty(fb2File.DocumentInfo.ID) )
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = string.Format("Document ID:  {0}", fb2File.DocumentInfo.ID) });
                    info.Add(p);
                }
                if (fb2File.DocumentInfo.DocumentVersion.HasValue)
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = string.Format("Document version:  {0}", fb2File.DocumentInfo.DocumentVersion) });
                    info.Add(p);                    
                }
                if ((fb2File.DocumentInfo.DocumentDate != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.DocumentDate.Text))
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = string.Format("Document creation date:  {0}", fb2File.DocumentInfo.DocumentDate.Text) });
                    info.Add(p);
                }
                if ( (fb2File.DocumentInfo.ProgramUsed2Create != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.ProgramUsed2Create.Text) )
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = string.Format("Created using:  {0} software", fb2File.DocumentInfo.ProgramUsed2Create.Text) });
                    info.Add(p);                    
                }
                if ((fb2File.DocumentInfo.SourceOCR != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.SourceOCR.Text))
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = string.Format("OCR Source:  {0}", fb2File.DocumentInfo.SourceOCR.Text) });
                    info.Add(p);                                        
                }
                if ((fb2File.DocumentInfo.DocumentAuthors != null) && (fb2File.DocumentInfo.DocumentAuthors.Count > 0))
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = "Document authors :" });
                    info.Add(heading);
                    var authors = new UnorderedList(HTMLElementType.XHTML11) ;
                    foreach (var author in fb2File.DocumentInfo.DocumentAuthors)
                    {
                        var li = new ListItem(HTMLElementType.XHTML11);
                        li.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = DescriptionConverters.GetAuthorAsSting(author) });
                        authors.Add(li);
                    }
                    info.Add(authors);
                }
                if ((fb2File.DocumentInfo.DocumentPublishers != null) && (fb2File.DocumentInfo.DocumentPublishers.Count > 0))
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = "Document publishers :" });
                    info.Add(heading);

                    var publishers = new UnorderedList(HTMLElementType.XHTML11);
                    foreach (var publisher in fb2File.DocumentInfo.DocumentPublishers)
                    {
                        var li = new ListItem(HTMLElementType.XHTML11);
                        li.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = DescriptionConverters.GetAuthorAsSting(publisher) });
                        publishers.Add(li);
                    }
                    info.Add(publishers);
                }

                if ((fb2File.DocumentInfo.SourceURLs != null) && (fb2File.DocumentInfo.SourceURLs.Any()))
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = "Source URLs :" });
                    info.Add(heading);

                    var urls = new UnorderedList(HTMLElementType.XHTML11);
                    foreach (var url in fb2File.DocumentInfo.SourceURLs)
                    {
                        var li = new ListItem(HTMLElementType.XHTML11);
                        if (ReferencesUtils.IsExternalLink(url))
                        {
                            var link = new Anchor(HTMLElementType.XHTML11);
                            link.HRef.Value = url;
                            link.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) {Text = url});
                            li.Add(link);
                        }
                        else
                        {
                            li.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = url });
                        }
                        urls.Add(li);
                    }
                    info.Add(urls);
                }

                if (fb2File.DocumentInfo.History != null)
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11) { Text = "Document history:" });
                    info.Add(heading);
                    var annotationConverter = new AnnotationConverterV2();
                    info.Add(annotationConverter.Convert(fb2File.DocumentInfo.History,new AnnotationConverterParamsV2 { Level = 1, Settings = settings }));
                    //Paragraph p = new Paragraph();
                    //p.Add(new SimpleHTML5Text() { Text = fb2File.DocumentInfo.History.ToString() });
                    //info.Add(p);                                                            
                }
            }

            // in case there is no elements - no need for a header
            if (info.SubElements().Count <= 1)
            {
                info.Remove(header);
            }

            SetClassType(info,ElementStylesV2.FB2Info);
            return info;
            
        }
        public HTMLItem Convert(FB2File fb2File, ConverterOptionsV2 settings)
        {
            if (fb2File == null)
            {
                throw new ArgumentNullException("fb2File");
            }
            var info   = new Div(HTMLElementType.XHTML11);
            var header = new H3(HTMLElementType.XHTML11);

            header.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
            {
                Text = "FB2 document info"
            });
            info.Add(header);
            if (fb2File.DocumentInfo != null)
            {
                if (!string.IsNullOrEmpty(fb2File.DocumentInfo.ID))
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = string.Format("Document ID:  {0}", fb2File.DocumentInfo.ID)
                    });
                    info.Add(p);
                }
                if (fb2File.DocumentInfo.DocumentVersion.HasValue)
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = string.Format("Document version:  {0}", fb2File.DocumentInfo.DocumentVersion)
                    });
                    info.Add(p);
                }
                if ((fb2File.DocumentInfo.DocumentDate != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.DocumentDate.Text))
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = string.Format("Document creation date:  {0}", fb2File.DocumentInfo.DocumentDate.Text)
                    });
                    info.Add(p);
                }
                if ((fb2File.DocumentInfo.ProgramUsed2Create != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.ProgramUsed2Create.Text))
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = string.Format("Created using:  {0} software", fb2File.DocumentInfo.ProgramUsed2Create.Text)
                    });
                    info.Add(p);
                }
                if ((fb2File.DocumentInfo.SourceOCR != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.SourceOCR.Text))
                {
                    var p = new Paragraph(HTMLElementType.XHTML11);
                    p.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = string.Format("OCR Source:  {0}", fb2File.DocumentInfo.SourceOCR.Text)
                    });
                    info.Add(p);
                }
                if ((fb2File.DocumentInfo.DocumentAuthors != null) && (fb2File.DocumentInfo.DocumentAuthors.Count > 0))
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = "Document authors :"
                    });
                    info.Add(heading);
                    var authors = new UnorderedList(HTMLElementType.XHTML11);
                    foreach (var author in fb2File.DocumentInfo.DocumentAuthors)
                    {
                        var li = new ListItem(HTMLElementType.XHTML11);
                        li.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                        {
                            Text = DescriptionConverters.GetAuthorAsSting(author)
                        });
                        authors.Add(li);
                    }
                    info.Add(authors);
                }
                if ((fb2File.DocumentInfo.DocumentPublishers != null) && (fb2File.DocumentInfo.DocumentPublishers.Count > 0))
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = "Document publishers :"
                    });
                    info.Add(heading);

                    var publishers = new UnorderedList(HTMLElementType.XHTML11);
                    foreach (var publisher in fb2File.DocumentInfo.DocumentPublishers)
                    {
                        var li = new ListItem(HTMLElementType.XHTML11);
                        li.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                        {
                            Text = DescriptionConverters.GetAuthorAsSting(publisher)
                        });
                        publishers.Add(li);
                    }
                    info.Add(publishers);
                }

                if ((fb2File.DocumentInfo.SourceURLs != null) && (fb2File.DocumentInfo.SourceURLs.Any()))
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = "Source URLs :"
                    });
                    info.Add(heading);

                    var urls = new UnorderedList(HTMLElementType.XHTML11);
                    foreach (var url in fb2File.DocumentInfo.SourceURLs)
                    {
                        var li = new ListItem(HTMLElementType.XHTML11);
                        if (ReferencesUtils.IsExternalLink(url))
                        {
                            var link = new Anchor(HTMLElementType.XHTML11);
                            link.HRef.Value = url;
                            link.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                            {
                                Text = url
                            });
                            li.Add(link);
                        }
                        else
                        {
                            li.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                            {
                                Text = url
                            });
                        }
                        urls.Add(li);
                    }
                    info.Add(urls);
                }

                if (fb2File.DocumentInfo.History != null)
                {
                    var heading = new H4(HTMLElementType.XHTML11);
                    heading.Add(new SimpleHTML5Text(HTMLElementType.XHTML11)
                    {
                        Text = "Document history:"
                    });
                    info.Add(heading);
                    var annotationConverter = new AnnotationConverterV2();
                    info.Add(annotationConverter.Convert(fb2File.DocumentInfo.History, new AnnotationConverterParamsV2 {
                        Level = 1, Settings = settings
                    }));
                    //Paragraph p = new Paragraph();
                    //p.Add(new SimpleHTML5Text() { Text = fb2File.DocumentInfo.History.ToString() });
                    //info.Add(p);
                }
            }

            // in case there is no elements - no need for a header
            if (info.SubElements().Count <= 1)
            {
                info.Remove(header);
            }

            SetClassType(info, ElementStylesV2.FB2Info);
            return(info);
        }