protected virtual void PassPagesToEpubFile(IEpubFile epubFile) { foreach (var xhtmlFile in StructureManager) { epubFile.AddXHTMLFile(xhtmlFile); } }
public void Save(string outFileName) { Logger.Log.DebugFormat("Saving {0}", outFileName); try { Logger.Log.DebugFormat("Saving totally {0} file(s)", _fb2Files.Count); foreach (var fb2File in _fb2Files) { IEpubFile epubFile = CreateEpub(); PassEPubSettings(epubFile); // do it first (before actual conversion) as if there is a problem with generating file name - we do not spend time here on generation string outFile = GenerateOutputFileName(epubFile, outFileName); LoadImagesInMemory(fb2File); ConvertContent(fb2File, epubFile); PassPagesToEpubFile(epubFile); epubFile.Generate(outFile); } } catch (Exception ex) { Logger.Log.ErrorFormat("Error saving file {0} : {1} - {2}", outFileName, ex.StackTrace, ex); throw; } }
protected override void ConvertContent(FB2File fb2File, IEpubFile epubFile) { var epubFileV3 = epubFile as EPubFileV3; if (epubFileV3 == null) { throw new ArrayTypeMismatchException(string.Format("Invalid ePub object type passed, expected EPubFileV3, got {0}",epubFile.GetType())); } PassHeaderDataFromFb2ToEpub(fb2File,epubFile.BookInformation); PassCoverImageFromFB2(fb2File.TitleInfo.Cover, epubFileV3); ConvertAnnotation(fb2File.TitleInfo, epubFileV3); SetupCSS(epubFileV3); SetupFonts(epubFileV3); PassTextFromFb2ToEpub(epubFileV3, fb2File); PassFb2InfoToEpub(epubFileV3, fb2File); UpdateInternalLinks(epubFileV3, fb2File); PassImagesDataFromFb2ToEpub(epubFileV3, fb2File); AddAboutInformation(epubFileV3); }
private string GenerateOutputFileName(IEpubFile epubFile, string outFileName) { int count = 0; string outFolder = Path.GetDirectoryName(outFileName); if (string.IsNullOrEmpty(outFolder)) { Logger.Log.DebugFormat("Using output folder : {0}", Settings.OutPutPath); outFolder = Settings.OutPutPath; } string outFile = Path.GetFileNameWithoutExtension(outFileName); Logger.Log.DebugFormat("Transliteration of file names set to : {0}", Settings.ConversionSettings.TransliterateFileName); if (Settings.ConversionSettings.TransliterateFileName && !string.IsNullOrEmpty(outFile)) { outFile = Rus2Lat.Instance.Translate(outFileName, epubFile.TranslitMode); Logger.Log.DebugFormat("New transliterated file name : {0}", outFile); } if (string.IsNullOrEmpty(outFile)) { outFile = "converted_file"; } string resultFilePath = Path.Combine(outFolder, outFile + ".epub"); while (File.Exists(resultFilePath)) { Logger.Log.DebugFormat("{0} file exists , incrementing", resultFilePath); resultFilePath = Path.Combine(outFolder, string.Format(@"{0}_{1}.epub", outFile, count++)); if (count == int.MaxValue) { throw new IndexOutOfRangeException(@"File name counter reached maximum possible limit - consider to clean up the folder"); } } Logger.Log.DebugFormat("Final output file name : {0}", resultFilePath); return(resultFilePath); }
protected override void ConvertContent(FB2File fb2File, IEpubFile epubFile) { var epubFileV3 = epubFile as EPubFileV3; if (epubFileV3 == null) { throw new ArrayTypeMismatchException(string.Format("Invalid ePub object type passed, expected EPubFileV3, got {0}", epubFile.GetType())); } PassHeaderDataFromFb2ToEpub(fb2File, epubFile.BookInformation); PassCoverImageFromFB2(fb2File.TitleInfo.Cover, epubFileV3); ConvertAnnotation(fb2File.TitleInfo, epubFileV3); SetupCSS(epubFileV3); SetupFonts(epubFileV3); PassTextFromFb2ToEpub(epubFileV3, fb2File); PassFb2InfoToEpub(epubFileV3, fb2File); UpdateInternalLinks(epubFileV3, fb2File); PassImagesDataFromFb2ToEpub(epubFileV3, fb2File); AddAboutInformation(epubFileV3); }
protected override void ConvertContent(FB2File fb2File, IEpubFile epubFile) { var epubFileV2 = epubFile as EPubFileV2; if (epubFileV2 == null) { throw new ArrayTypeMismatchException(string.Format("Invalid ePub object type passed, expected EPubFileV2, got {0}", epubFile.GetType())); } _referencesManager.FlatStructure = Settings.CommonSettings.FlatStructure; PassHeaderDataFromFb2ToEpub(fb2File, epubFileV2); var titlePage = new TitlePageFileV2(epubFileV2.BookInformation); StructureManager.AddTitlePage(titlePage); PassCoverImageFromFB2(fb2File.TitleInfo.Cover, epubFileV2); ConvertAnnotation(fb2File.TitleInfo, epubFileV2); SetupCSS(epubFileV2); SetupFonts(epubFileV2); PassTextFromFb2ToEpub(fb2File); PassFb2InfoToEpub(epubFileV2, fb2File); PassImagesDataFromFb2ToEpub(epubFileV2, fb2File); AddAboutInformation(epubFileV2); UpdateInternalLinks(fb2File); }
protected override void ConvertContent(FB2File fb2File, IEpubFile epubFile) { var epubFileV2 = epubFile as EPubFileV2; if (epubFileV2 == null) { throw new ArrayTypeMismatchException(string.Format("Invalid ePub object type passed, expected EPubFileV2, got {0}", epubFile.GetType())); } _referencesManager.FlatStructure = Settings.CommonSettings.FlatStructure; PassHeaderDataFromFb2ToEpub(fb2File, epubFileV2); var titlePage = new TitlePageFileV2(epubFileV2.BookInformation); StructureManager.AddTitlePage(titlePage); PassCoverImageFromFB2(fb2File.TitleInfo.Cover, epubFileV2); ConvertAnnotation(fb2File.TitleInfo, epubFileV2); SetupCSS(epubFileV2); SetupFonts(epubFileV2); PassTextFromFb2ToEpub(fb2File); PassFb2InfoToEpub(epubFileV2, fb2File); PassImagesDataFromFb2ToEpub(epubFileV2, fb2File); AddAboutInformation(epubFileV2); UpdateInternalLinks(fb2File); }
private void SetTransliterationOptions(IEpubFile epubFile) { var setting = new TransliterationSettingsImp { FileName = string.IsNullOrEmpty(Settings.ResourcesPath) ? @".\Translit\translit.xml" : string.Format(@"{0}\Translit\translit.xml", Settings.ResourcesPath), }; Logger.Log.DebugFormat("Using transliteration rule file : {0}", setting.FileName); if (Settings.ConversionSettings.TransliterationSettings.Transliterate) { setting.Mode = TranslitModeEnum.ExternalRuleFile; if (!File.Exists(setting.FileName)) { Logger.Log.ErrorFormat(@"Unable to locate translation file {0}, switching transliteration off", setting.FileName); setting.Mode = TranslitModeEnum.None; } } else { setting.Mode = TranslitModeEnum.None; } Logger.Log.DebugFormat("Transliteration mode : {0}", setting.Mode); epubFile.TranslitMode = setting; }
private void SetTransliterationOptions(IEpubFile epubFile) { var setting = new TransliterationSettingsImp { FileName = string.IsNullOrEmpty(Settings.ResourcesPath) ? @".\Translit\translit.xml" : string.Format(@"{0}\Translit\translit.xml", Settings.ResourcesPath), }; Logger.Log.DebugFormat("Using transliteration rule file : {0}", setting.FileName); if (Settings.ConversionSettings.TransliterationSettings.Transliterate) { setting.Mode = TranslitModeEnum.ExternalRuleFile; if (!File.Exists(setting.FileName)) { Logger.Log.ErrorFormat(@"Unable to locate translation file {0}, switching transliteration off", setting.FileName); setting.Mode = TranslitModeEnum.None; } } else { setting.Mode = TranslitModeEnum.None; } Logger.Log.DebugFormat("Transliteration mode : {0}", setting.Mode); epubFile.TranslitMode = setting; }
private string GenerateOutputFileName(IEpubFile epubFile, string outFileName) { int count = 0; string outFolder = Path.GetDirectoryName(outFileName); if (string.IsNullOrEmpty(outFolder)) { Logger.Log.DebugFormat("Using output folder : {0}", Settings.OutPutPath); outFolder = Settings.OutPutPath; } string outFile = Path.GetFileNameWithoutExtension(outFileName); Logger.Log.DebugFormat("Transliteration of file names set to : {0}", Settings.ConversionSettings.TransliterateFileName); if (Settings.ConversionSettings.TransliterateFileName && !string.IsNullOrEmpty(outFile)) { outFile = Rus2Lat.Instance.Translate(outFileName, epubFile.TranslitMode); Logger.Log.DebugFormat("New transliterated file name : {0}", outFile); } if (string.IsNullOrEmpty(outFile)) { outFile = "converted_file"; } string resultFilePath = Path.Combine(outFolder,outFile + ".epub"); while (File.Exists(resultFilePath) ) { Logger.Log.DebugFormat("{0} file exists , incrementing", resultFilePath); resultFilePath = Path.Combine(outFolder,string.Format(@"{0}_{1}.epub", outFile, count++)); if (count == int.MaxValue) { throw new IndexOutOfRangeException(@"File name counter reached maximum possible limit - consider to clean up the folder"); } } Logger.Log.DebugFormat("Final output file name : {0}", resultFilePath); return resultFilePath; }
private void PassEPubSettings(IEpubFile epubFile) { SetTransliterationOptions(epubFile); }
/// <summary> /// Saves the loaded FB2 file(s) to the destination as ePub /// </summary> /// <param name="fb2File"></param> /// <param name="epubFile"></param> protected abstract void ConvertContent(FB2File fb2File, IEpubFile epubFile);
private void PassEPubSettings(IEpubFile epubFile) { SetTransliterationOptions(epubFile); }
/// <summary> /// Saves the loaded FB2 file(s) to the destination as ePub /// </summary> /// <param name="fb2File"></param> /// <param name="epubFile"></param> protected abstract void ConvertContent(FB2File fb2File, IEpubFile epubFile);
protected override void PassPagesToEpubFile(IEpubFile epubFile) { foreach (var xhtmlFile in StructureManager) { epubFile.AddXHTMLFile(xhtmlFile); } }