/// <summary>
/// Converts the ePub document input file into OneNote
/// </summary>
/// <param name="inputFile"></param>
/// <param name="outputDir"></param>
/// <returns></returns>
public virtual bool ConvertEpubToOneNote(string inputFile, string outputDir)
{
try
{
// Initialize epub reader class
var epub = new EpubReader(inputFile, outputDir);
// Get the page contents
List<string> pageTitles = epub.GetPageTitles();
List<HtmlDocument> pagesHtml = epub.GetPagesAsHtmlDocuments();
List<string> pagePaths = epub.GetPagePaths();
Dictionary<string, int> pagesLevel = epub.GetPagesLevel();
// Create a new OneNote Notebook
var note = new OneNoteGenerator(outputDir);
string notebookId = note.CreateNotebook(GetSupportedInputFormat());
string sectionId = note.CreateSection(epub.GetTitle(), notebookId);
// Create pages
var pageIds = pageTitles.Select(pageTitle => note.CreatePage(pageTitle, sectionId)).ToArray();
// Get links to pages
var pageLinks = pageIds.Select(pageId => note.GetHyperLinkToObject(pageId)).ToList();
// Replace links to .html with .one
ReplaceEpubLinksFromHtmlToOneNote(pagesHtml, pagePaths, pageLinks);
// Add content to pages
for (var i = 0; i < pageIds.Length; i++)
{
note.AppendPageContentAsHtmlBlock(pageIds[i], pagesHtml[i].DocumentNode.OuterHtml);
if (pagesLevel.ContainsKey(pagePaths[i]))
{
note.SetPageLevel(pageIds[i], pagesLevel[pagePaths[i]]);
}
}
return true;
}
catch (Exception e)
{
Console.WriteLine(@"Error in ConvertEpubToOneNote for file {0}: {1}", inputFile, e.Message);
return false;
}
}