public static DeckModel OpenXPS(string file) { try { Misc.ProgressBarForm progressForm = new UW.ClassroomPresenter.Misc.ProgressBarForm("Opening \"" + file + "\"..."); progressForm.Show(); //Open Xps Document XpsDocument xpsDocument = null; xpsDocument = new XpsDocument(file, FileAccess.Read); //Create two DocumentPaginators for the XPS document. One is for local display, the other one is for the delivery to students. DocumentPaginator paginator = xpsDocument.GetFixedDocumentSequence().DocumentPaginator; //Create Deck Model Guid deckGuid = Guid.NewGuid(); DeckModel deck = new DeckModel(deckGuid, DeckDisposition.Empty, file); using (Synchronizer.Lock(deck.SyncRoot)) { deck.IsXpsDeck = true; //Iterate over all pages for (int i = 0; i < paginator.PageCount; i++) { DocumentPage page = paginator.GetPage(i); SlideModel newSlideModel = CreateSlide(page, deck); //Create a new Entry + reference SlideModel TableOfContentsModel.Entry newEntry = new TableOfContentsModel.Entry(Guid.NewGuid(), deck.TableOfContents, newSlideModel); //Lock the TOC using (Synchronizer.Lock(deck.TableOfContents.SyncRoot)) { //Add Entry to TOC deck.TableOfContents.Entries.Add(newEntry); } //Update the Progress Bar progressForm.UpdateProgress(0, paginator.PageCount, i + 1); } } //Close Progress Bar progressForm.Close(); return(deck); } catch (Exception e) { System.Diagnostics.Trace.WriteLine(e.ToString()); } GC.Collect(); return(null); }
public static DeckModel OpenXPS(string file) { try { Misc.ProgressBarForm progressForm = new UW.ClassroomPresenter.Misc.ProgressBarForm("Opening \"" + file + "\"..."); progressForm.Show(); //Open Xps Document XpsDocument xpsDocument = null; xpsDocument = new XpsDocument(file, FileAccess.Read); //Create two DocumentPaginators for the XPS document. One is for local display, the other one is for the delivery to students. DocumentPaginator paginator = xpsDocument.GetFixedDocumentSequence().DocumentPaginator; //Create Deck Model Guid deckGuid = Guid.NewGuid(); DeckModel deck = new DeckModel(deckGuid, DeckDisposition.Empty, file); using (Synchronizer.Lock(deck.SyncRoot)) { deck.IsXpsDeck = true; //Iterate over all pages for (int i = 0; i < paginator.PageCount; i++) { DocumentPage page = paginator.GetPage(i); SlideModel newSlideModel = CreateSlide(page, deck); //Create a new Entry + reference SlideModel TableOfContentsModel.Entry newEntry = new TableOfContentsModel.Entry(Guid.NewGuid(), deck.TableOfContents, newSlideModel); //Lock the TOC using (Synchronizer.Lock(deck.TableOfContents.SyncRoot)) { //Add Entry to TOC deck.TableOfContents.Entries.Add(newEntry); } //Update the Progress Bar progressForm.UpdateProgress(0, paginator.PageCount , i+1); } } //Close Progress Bar progressForm.Close(); return deck; } catch (Exception e) { System.Diagnostics.Trace.WriteLine(e.ToString()); } GC.Collect(); return null; }