public void Convert(FB2File fb2File, IBookInformationData titleInformation) { if (fb2File.PublishInfo.BookTitle != null) { var bookTitle = new Title { TitleName = Rus2Lat.Instance.Translate(fb2File.PublishInfo.BookTitle.Text, _conversionSettings.TransliterationSettings), Language = !string.IsNullOrEmpty(fb2File.PublishInfo.BookTitle.Language) ? fb2File.PublishInfo.BookTitle.Language : fb2File.TitleInfo.Language }; if (!SourceDataInclusionControl.Instance.IsIgnoreInfoSource(SourceDataInclusionControl.DataTypes.Publish, _conversionSettings.IgnoreTitle)) { bookTitle.TitleType = TitleType.PublishInfo; titleInformation.BookTitles.Add(bookTitle); } } if (fb2File.PublishInfo.ISBN != null) { var bookId = new Identifier { IdentifierName = "BookISBN", ID = fb2File.PublishInfo.ISBN.Text, Scheme = "ISBN" }; titleInformation.Identifiers.Add(bookId); } titleInformation.Publisher = new Publisher(); if (fb2File.PublishInfo.Publisher != null) { titleInformation.Publisher.PublisherName = Rus2Lat.Instance.Translate(fb2File.PublishInfo.Publisher.Text, _conversionSettings.TransliterationSettings); } try { if (fb2File.PublishInfo.Year.HasValue) { var date = new DateTime(fb2File.PublishInfo.Year.Value, 1, 1); titleInformation.DatePublished = date; } } catch (FormatException ex) { Logger.Log.DebugFormat("Date reading format exception: {0}", ex); } catch (Exception exAll) { Logger.Log.ErrorFormat("Date reading exception: {0}", exAll); } }
public virtual XDocument Generate() { var mainDocument = new HTMLDocument(Compatibility); GenerateHead(); GenerateBody(); var encoding = new UTF8Encoding(); foreach (var file in _styles) { IHTMLItem styleElement; if (EmbedStyles) { var styleElementEntry = new Style(Compatibility); styleElement = styleElementEntry; styleElementEntry.Type.Value = CSSFile.MediaType.GetAsSerializableString(); try { using (var outStream = new MemoryStream()) { file.Write(outStream); styleElementEntry.InternalTextItem.Text = encoding.GetString(outStream.ToArray()); } } catch { // ignored } } else { var cssStyleSheet = new Link(Compatibility); styleElement = cssStyleSheet; cssStyleSheet.Relation.Value = "stylesheet"; cssStyleSheet.Type.Value = file.GetMediaType().GetAsSerializableString(); cssStyleSheet.HRef.Value = file.PathInEPUB.GetRelativePath(FileEPubInternalPath, FlatStructure); } HeadElement.Add(styleElement); } mainDocument.RootHTML.Add(HeadElement); mainDocument.RootHTML.Add(BodyElement); if (!mainDocument.RootHTML.IsValid()) { throw new Exception("Document content is not valid"); } var titleElm = new Title(Compatibility); titleElm.InternalTextItem.Text = InternalPageTitle; HeadElement.Add(titleElm); _generatedCodeXDocument = mainDocument.Generate(); Durty = false; return _generatedCodeXDocument; }
public void Convert(FB2File fb2File, IBookInformationData titleInformation) { if ((fb2File.DocumentInfo.SourceOCR != null) && !string.IsNullOrEmpty(fb2File.DocumentInfo.SourceOCR.Text)) { titleInformation.Source = new Source { SourceData = fb2File.DocumentInfo.SourceOCR.Text }; } foreach (var docAuthor in fb2File.DocumentInfo.DocumentAuthors) { var person = new PersoneWithRole { PersonName = Rus2Lat.Instance.Translate(DescriptionConverters.GenerateAuthorString(docAuthor, _conversionSettings), _conversionSettings.TransliterationSettings), FileAs = DescriptionConverters.GenerateFileAsString(docAuthor, _conversionSettings), Role = RolesEnum.Adapter }; if (fb2File.TitleInfo != null) { person.Language = fb2File.TitleInfo.Language; } titleInformation.Contributors.Add(person); } // Getting information from FB2 Source Title Info section if (!SourceDataInclusionControl.Instance.IsIgnoreInfoSource(SourceDataInclusionControl.DataTypes.Source, _conversionSettings.IgnoreTitle) && (fb2File.SourceTitleInfo.BookTitle != null) && !string.IsNullOrEmpty(fb2File.SourceTitleInfo.BookTitle.Text)) { var bookTitle = new Title { TitleName = Rus2Lat.Instance.Translate(fb2File.SourceTitleInfo.BookTitle.Text, _conversionSettings.TransliterationSettings), Language = string.IsNullOrEmpty(fb2File.SourceTitleInfo.BookTitle.Language) && (fb2File.TitleInfo != null) ? fb2File.TitleInfo.Language : fb2File.SourceTitleInfo.BookTitle.Language, TitleType = TitleType.SourceInfo }; titleInformation.BookTitles.Add(bookTitle); titleInformation.Languages.Add(fb2File.SourceTitleInfo.Language); } // add authors foreach (var author in fb2File.SourceTitleInfo.BookAuthors) { var person = new PersoneWithRole { PersonName = Rus2Lat.Instance.Translate( string.Format("{0} {1} {2}", author.FirstName, author.MiddleName, author.LastName), _conversionSettings.TransliterationSettings), FileAs = DescriptionConverters.GenerateFileAsString(author, _conversionSettings), Role = RolesEnum.Author, Language = fb2File.SourceTitleInfo.Language }; titleInformation.Creators.Add(person); } TranslatorsInfoConverterV3.Convert(fb2File.SourceTitleInfo, titleInformation, _conversionSettings); GenresInfoConverterV3.Convert(fb2File.SourceTitleInfo, titleInformation,_conversionSettings); }