AddPageToCache(Uri pageUri) { PackagePart pagePart = CurrentXpsManager.GetPart(pageUri); if (pagePart == null) { throw new XpsPackagingException(SR.Get(SRID.ReachPackaging_PartNotFound)); } if (!pagePart.ValidatedContentType().AreTypeAndSubTypeEqual(XpsS0Markup.FixedPageContentType)) { throw new XpsPackagingException(SR.Get(SRID.ReachPackaging_NotAFixedPage)); } // // Create the reader/writer for the part // IXpsFixedPageReader pageReader = new XpsFixedPageReaderWriter(CurrentXpsManager, this, pagePart, null, _pageCache.Count + 1); // // Cache the new reader/writer for later // _pageCache.Add(pageReader); return(pageReader); }
AddFixedPage( ) { if (null == _metroPart || null == CurrentXpsManager.MetroPackage) { throw new ObjectDisposedException("XpsFixedDocumentReaderWriter"); } // // Only one page can be created/written at a time. // if (null != _currentPage) { throw new XpsPackagingException(SR.Get(SRID.ReachPackaging_PanelOrSequenceAlreadyOpen)); } _linkTargetStream = new List <String>(); // // Create the part and writer // PackagePart metroPart = this.CurrentXpsManager.GenerateUniquePart(XpsS0Markup.FixedPageContentType); XpsFixedPageReaderWriter fixedPage = new XpsFixedPageReaderWriter(CurrentXpsManager, this, metroPart, _linkTargetStream, _pagesWritten + 1); // // Make the new page the current page // _currentPage = fixedPage; //Here we used to add the fixed page to _pageCache, but _pageCache is never accessed if this object was created as an IXpsFixedDocumentWriter. //So instead keep a separate pagesWritten count and forget about the cache when using this method. _pagesWritten++; return(fixedPage); }