Example #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);
        }
        public void ValidateNonExistFile()
        {
            const string inputFile  = Utility.NonExistentInputFile;
            var          pptOpenXml = new PowerPointOpenXml(inputFile);

            var N = pptOpenXml.NumberOfSlides();
        }
        /// <summary>
        /// Inserts a power point slide into a given section in OneNote as a page
        /// </summary>
        /// <param name="slideNumber"></param>
        /// <param name="pptOpenXml"></param>
        /// <param name="imgsPath"></param>
        /// <param name="note"></param>
        /// <param name="sectionId"></param>
        /// <param name="showComments"></param>
        /// <param name="commentsStr"></param>
        /// <param name="showNotes"></param>
        /// <param name="notesStr"></param>
        /// <param name="hiddenSlideNotIncluded"></param>
        /// <returns>the page ID</returns>
        protected string InsertPowerPointSlideInOneNote(int slideNumber, PowerPointOpenXml pptOpenXml, string imgsPath,
                                                        OneNoteGenerator note, string sectionId, bool showComments = true, string commentsStr = "Comments",
                                                        bool showNotes = true, string notesStr = "Notes", bool hiddenSlideNotIncluded = true)
        {
            // skip hidden slides
            if (hiddenSlideNotIncluded && pptOpenXml.IsHiddenSlide(slideNumber))
            {
                return(String.Empty);
            }

            // get the image representing the current slide as HTML
            string imgPath = String.Format("{0}\\Slide{1}.png", imgsPath, slideNumber);
            Image  img;

            try
            {
                img = Image.FromFile(imgPath);
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine("Slide {0} was not converted", slideNumber);
                Console.WriteLine(e.Message);
                img = null;
            }

            // insert the image
            string pageTitle = pptOpenXml.GetSlideTitle(slideNumber);

            pageTitle = String.IsNullOrEmpty(pageTitle) ? String.Format("Slide{0}", slideNumber) : pageTitle;
            string pageId = note.CreatePage(pageTitle, sectionId);

            if (img != null)
            {
                note.AddImageToPage(pageId, img);
                img.Dispose();
            }

            // Add comments
            string slideComments = pptOpenXml.GetSlideComments(slideNumber, false);

            if (showComments && !String.IsNullOrEmpty(slideComments))
            {
                note.AppendPageContent(pageId, commentsStr + ": \n\n" + slideComments, (int)note.GetPageWidth(pageId));
            }

            // Add notes
            string slideNotes = pptOpenXml.GetSlideNotes(slideNumber);

            if (showNotes && !String.IsNullOrEmpty(slideNotes))
            {
                note.AppendPageContent(pageId, notesStr + ": \n\n" + slideNotes, (int)note.GetPageWidth(pageId));
            }

            // remove the author
            note.RemoveAuthor(pageId);

            return(pageId);
        }
Example #4
0
        /// <summary>
        /// Converts PowerPoint presentan to OneNote while converting the sections in power point to main pages, and slides to sub pages
        /// It creates two notebooks, one for the Trainer and one for the student
        /// </summary>
        /// <param name="pptOpenXml"></param>
        /// <param name="imgsPath"></param>
        /// <param name="note"></param>
        /// <param name="sectionName"></param>
        protected override void ConvertPowerPointToOneNote(PowerPointOpenXml pptOpenXml, string imgsPath, OneNoteGenerator note,
                                                           string sectionName)
        {
            string trainerNotebookId = String.Empty;
            string trainerSectionId  = String.Empty;

            if (IncludeTrainerNotebook())
            {
                // Create the student notebook
                trainerNotebookId = note.CreateNotebook(TrainerNotebook);
                trainerSectionId  = note.CreateSection(sectionName, trainerNotebookId);
            }

            string studentNotebookId = String.Empty;
            string studentSectionId  = String.Empty;

            if (IncludeStudentNotebook())
            {
                // Create the student notebook
                studentNotebookId = note.CreateNotebook(StudentNotebook);
                studentSectionId  = note.CreateSection(sectionName, studentNotebookId);
            }

            if (pptOpenXml.HasSections())
            {
                List <string>      sectionNames     = pptOpenXml.GetSectionNames();
                List <List <int> > slidesInSections = pptOpenXml.GetSlidesInSections();

                if (IncludeTrainerNotebook())
                {
                    ConvertPowerPointWithSectionsToOneNote(pptOpenXml, imgsPath, note, trainerSectionId, sectionNames, slidesInSections, true);
                }

                if (IncludeStudentNotebook())
                {
                    ConvertPowerPointWithSectionsToOneNote(pptOpenXml, imgsPath, note, studentSectionId, sectionNames, slidesInSections, false);
                }
            }
            else
            {
                if (IncludeTrainerNotebook())
                {
                    ConvertPowerPointWithoutSectionsToOneNote(pptOpenXml, imgsPath, note, trainerSectionId, true);
                }

                if (IncludeStudentNotebook())
                {
                    ConvertPowerPointWithoutSectionsToOneNote(pptOpenXml, imgsPath, note, studentSectionId, false);
                }
            }
        }
Example #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 presentation into OneNote section
        /// </summary>
        /// <param name="inputFile"></param>
        /// <param name="outputDir"></param>
        /// <returns></returns>
        public virtual bool ConvertPowerPointToOneNote(string inputFile, string outputDir)
        {
            // Get the name of the file
            string inputFileName = Path.GetFileNameWithoutExtension(inputFile);

            // Convert presentation slides to images
            string imgsPath = ConvertPowerPointToImages(inputFile, outputDir);

            // Create a new OneNote Notebook
            var note = new OneNoteGenerator(outputDir);

            // Convert to OneNote
            var pptOpenXml = new PowerPointOpenXml(inputFile);

            ConvertPowerPointToOneNote(pptOpenXml, imgsPath, note, inputFileName);

            // Delete the temperory imgs directory
            Utility.DeleteDirectory(imgsPath);

            return(true);
        }
        /// <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);
                }
            }
        }
 public static void MyClassInitialize(TestContext testContext)
 {
     _mPptOpenXml = new PowerPointOpenXml(TestPptPath);
 }