Beispiel #1
0
        /// <summary>
        /// Helper method to include the common code between the trainer and the student create notebook when converting
        /// Power Point files that doesn't have sections
        /// </summary>
        /// <param name="pptOpenXml"></param>
        /// <param name="imgsPath"></param>
        /// <param name="note"></param>
        /// <param name="sectionId"></param>
        /// <param name="isTrainer"></param>
        private void ConvertPowerPointWithoutSectionsToOneNote(PowerPointOpenXml pptOpenXml, string imgsPath, OneNoteGenerator note,
                                                               string sectionId, bool isTrainer)
        {
            for (var i = 1; i <= pptOpenXml.NumberOfSlides(); i++)
            {
                string pageId;
                if (isTrainer)
                {
                    pageId = InsertPowerPointSlideInOneNote(i, pptOpenXml, imgsPath, note, sectionId,
                                                            true, StudentNotesTitle, true, TrainerNotesTitle);
                }
                else
                {
                    pageId = InsertPowerPointSlideInOneNote(i, pptOpenXml, imgsPath, note, sectionId,
                                                            true, StudentNotesTitle, false);
                }
                if (!pageId.Equals(String.Empty))
                {
                    note.SetShowDate(pageId, false);
                    note.SetShowTime(pageId, false);
                }
            }
            string tocPageId = note.CreateTableOfContentPage(sectionId);

            note.SetShowDate(tocPageId, false);
            note.SetShowTime(tocPageId, false);
        }
        /// <summary>
        /// Converts PDF file to OneNote by including an image for each page in the document
        /// </summary>
        /// <param name="inputFile">PDF document path</param>
        /// <param name="outputDir">Directory of the output OneNote Notebook</param>
        /// <returns></returns>
        public virtual bool ConvertPdfToOneNote(string inputFile, string outputDir)
        {
            //Get the name of the file
            string inputFileName = Path.GetFileNameWithoutExtension(inputFile);

            //Create a new OneNote Notebook
            var    note       = new OneNoteGenerator(outputDir);
            string notebookId = note.CreateNotebook(GetSupportedInputFormat());
            string sectionId  = note.CreateSection(inputFileName, notebookId);

            using (var rasterizer = new GhostscriptRasterizer())
            {
                rasterizer.Open(inputFile);
                for (var i = 1; i <= rasterizer.PageCount; i++)
                {
                    Image        img    = rasterizer.GetPage(160, 160, i);
                    MemoryStream stream = new MemoryStream();
                    img.Save(stream, ImageFormat.Png);
                    img = Image.FromStream(stream);

                    string pageId = note.CreatePage(String.Format("Page{0}", i), sectionId);
                    note.AddImageToPage(pageId, img);
                }
            }

            note.CreateTableOfContentPage(sectionId);

            return(true);
        }
        /// <summary>
        /// Converts the Word document input file into OneNote
        /// </summary>
        /// <param name="inputFile"></param>
        /// <param name="outputDir"></param>
        public virtual bool ConvertWordToOneNote(string inputFile, string outputDir)
        {
            var retVal = false;

            string inputFileName = Path.GetFileNameWithoutExtension(inputFile);

            var tempPath = outputDir + "\\temp\\";

            if (!Directory.Exists(tempPath))
            {
                Directory.CreateDirectory(tempPath);
            }

            object tempHtmlFilePath   = tempPath + inputFileName + HtmlFileExtension;
            object htmlFilteredFormat = WdSaveFormat.wdFormatFilteredHTML;

            //used to get pictures in word document
            object auxiliaryFilePath      = tempPath + inputFileName + AuxFileSuffix;
            object htmlFormat             = WdSaveFormat.wdFormatHTML;
            var    auxiliaryFilePicFolder = auxiliaryFilePath + AuxFileLocationSuffix;
            var    originalFilePicFolder  = tempPath + inputFileName + AuxFileLocationSuffix;

            try
            {
                //Save the word document as a HTML file temporarily
                var word = new WordApplication();
                var doc  = word.Documents.Open(inputFile);

                doc.SaveAs(ref tempHtmlFilePath, ref htmlFilteredFormat);
                doc.SaveAs(ref auxiliaryFilePath, ref htmlFormat);

                ((_WordDocument)doc).Close();
                ((_WordApplication)word).Quit();

                //Create a new OneNote Notebook
                var note       = new OneNoteGenerator(outputDir);
                var notebookId = note.CreateNotebook(GetSupportedInputFormat());
                var sectionId  = note.CreateSection(inputFileName, notebookId);

                //Now migrate the content in the temporary HTML file into the newly created OneNote Notebook
                if (ConvertHtmlToOneNote(tempHtmlFilePath.ToString(), originalFilePicFolder, auxiliaryFilePicFolder, note, sectionId))
                {
                    //Generate table of content
                    note.CreateTableOfContentPage(sectionId);
                    retVal = true;
                }
            }
            finally
            {
                Utility.DeleteDirectory(tempPath);
            }

            return(retVal);
        }
        public void ValidateCreateTableOfContentPage()
        {
            const string tocPageTitle = "Test Table of Content";
            var          tocPageId    = _mOneNoteGenerator.CreateTableOfContentPage(_mTestSectionId, tocPageTitle);

            var sectionHierarchy = _mOneNoteGenerator.GetChildrenScopeHierarchy(_mTestSectionId);

            Assert.IsNotNull(sectionHierarchy);

            XDocument xdoc = XDocument.Parse(sectionHierarchy);
            var       node = xdoc.Elements(_mXmlNs + "Section")
                             .Single(x => x.Attribute("name").Value.Equals(TestSectionName))
                             .Elements(_mXmlNs + "Page")
                             .Single(x => x.Attribute("ID").Value.Equals(tocPageId));

            Assert.IsNotNull(node);
            Assert.IsTrue(node.Attribute("name").Value.Equals(tocPageTitle));
            Assert.IsTrue(node.Attribute("ID").Value.Equals(tocPageId));
        }
Beispiel #5
0
        /// <summary>
        /// Helper method to include the common code between the trainer and the student create notebook when converting
        /// Power Point files that have sections
        /// </summary>
        /// <param name="pptOpenXml"></param>
        /// <param name="imgsPath"></param>
        /// <param name="note"></param>
        /// <param name="sectionId"></param>
        /// <param name="sectionNames"></param>
        /// <param name="slidesInSections"></param>
        /// <param name="isTrainer"></param>
        private void ConvertPowerPointWithSectionsToOneNote(PowerPointOpenXml pptOpenXml, string imgsPath, OneNoteGenerator note,
                                                            string sectionId, List <string> sectionNames, List <List <int> > slidesInSections, bool isTrainer)
        {
            var pptSectionsPageIds = new List <string>();

            for (int i = 0; i < sectionNames.Count; i++)
            {
                string pptSectionPageId = note.CreatePage(sectionNames[i], sectionId);
                foreach (var slideNumber in slidesInSections[i])
                {
                    string pageId;
                    if (isTrainer)
                    {
                        pageId = InsertPowerPointSlideInOneNote(slideNumber, pptOpenXml, imgsPath, note, sectionId,
                                                                true, StudentNotesTitle, true, TrainerNotesTitle);
                    }
                    else
                    {
                        pageId = InsertPowerPointSlideInOneNote(slideNumber, pptOpenXml, imgsPath, note, sectionId,
                                                                true, StudentNotesTitle, false);
                    }
                    if (!pageId.Equals(String.Empty))
                    {
                        note.SetSubPage(sectionId, pageId);
                        note.SetShowDate(pageId, false);
                        note.SetShowTime(pageId, false);
                    }
                }
                pptSectionsPageIds.Add(pptSectionPageId);
            }

            string tocPageId = note.CreateTableOfContentPage(sectionId);

            note.SetShowDate(tocPageId, false);
            note.SetShowTime(tocPageId, false);

            foreach (var pptSectionPageId in pptSectionsPageIds)
            {
                note.SetCollapsePage(pptSectionPageId);
                note.SetShowDate(pptSectionPageId, false);
                note.SetShowTime(pptSectionPageId, false);
            }
        }
        /// <summary>
        /// Converts PowerPoint presentan to OneNote while converting the sections in power point to main pages, and slides to sub pages
        /// </summary>
        /// <param name="pptOpenXml"></param>
        /// <param name="imgsPath"></param>
        /// <param name="note"></param>
        /// <param name="sectionName"></param>
        protected virtual void ConvertPowerPointToOneNote(PowerPointOpenXml pptOpenXml, string imgsPath, OneNoteGenerator note,
                                                          string sectionName)
        {
            string notebookId = note.CreateNotebook(GetSupportedInputFormat());
            string sectionId  = note.CreateSection(sectionName, notebookId);

            if (pptOpenXml.HasSections())
            {
                List <string>      sectionNames     = pptOpenXml.GetSectionNames();
                List <List <int> > slidesInSections = pptOpenXml.GetSlidesInSections();
                var pptSectionsPageIds = new List <string>();
                for (int i = 0; i < sectionNames.Count; i++)
                {
                    string pptSectionPageId = note.CreatePage(sectionNames[i], sectionId);
                    foreach (var slideNumber in slidesInSections[i])
                    {
                        string pageId = InsertPowerPointSlideInOneNote(slideNumber, pptOpenXml, imgsPath, note, sectionId);
                        if (!String.IsNullOrEmpty(pageId))
                        {
                            note.SetSubPage(sectionId, pageId);
                        }
                    }
                    pptSectionsPageIds.Add(pptSectionPageId);
                }

                note.CreateTableOfContentPage(sectionId);

                foreach (var pptSectionPageId in pptSectionsPageIds)
                {
                    note.SetCollapsePage(pptSectionPageId);
                }
            }
            else
            {
                for (var i = 1; i <= pptOpenXml.NumberOfSlides(); i++)
                {
                    InsertPowerPointSlideInOneNote(i, pptOpenXml, imgsPath, note, sectionId);
                }
            }
        }