Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }