Esempio n. 1
0
        AcquireResourceStreamForXpsColorContext(
            string resourceId
            )
        {
            XpsResourceStream resourceStream = null;

            if (_currentXpsColorContextRef == 0)
            {
                try
                {
                    XpsPrintStream colorContextStreamWrapper = XpsPrintStream.CreateXpsPrintStream();
                    Uri            colorContextUri           = _xpsManager.GenerateUniqueUri(XpsS0Markup.ColorContextContentType);
                    _colorContextResourceStream = new XpsResourceStream(colorContextStreamWrapper, colorContextUri);
                    IStream _colorIStream = colorContextStreamWrapper.GetManagedIStream();

                    IOpcPartUri partUri = GenerateIOpcPartUri(colorContextUri);
                    IXpsOMColorProfileResource           colorResource   = _xpsOMFactory.CreateColorProfileResource(_colorIStream, partUri);
                    IXpsOMColorProfileResourceCollection colorCollection = _xpsPartResources.GetColorProfileResources();
                    colorCollection.Append(colorResource);
                }
                catch (COMException)
                {
                    Invalidate();
                    throw new PrintingCanceledException();
                }
            }

            _currentXpsColorContextRef++;

            resourceStream = _colorContextResourceStream;

            return(resourceStream);
        }
Esempio n. 2
0
        AcquireResourceStreamForXpsFont(
            string resourceId
            )
        {
            XpsResourceStream resourceStream = null;

            ResourceStreamCacheItem resourceStreamCacheItem = (ResourceStreamCacheItem)_fontsCache[resourceId];

            if (resourceStreamCacheItem == null)
            {
                resourceStreamCacheItem = new ResourceStreamCacheItem();

                //
                // We need to create the corresponding part in the Xps package
                // and then acquire the Stream
                //
                if (_currentFixedPageXmlWriter != null)
                {
                    try
                    {
                        Uri         uri     = GenerateUriForObfuscatedFont();
                        IOpcPartUri partUri = GenerateIOpcPartUri(uri);

                        XpsPrintStream fontStreamWrapper = XpsPrintStream.CreateXpsPrintStream();

                        IStream fontIStream = fontStreamWrapper.GetManagedIStream();

                        IXpsOMFontResource           fontResource   = _xpsOMFactory.CreateFontResource(fontIStream, XPS_FONT_EMBEDDING.XPS_FONT_EMBEDDING_OBFUSCATED, partUri, 1);
                        IXpsOMFontResourceCollection fontCollection = _xpsPartResources.GetFontResources();
                        fontCollection.Append(fontResource);

                        XpsResourceStream fontResourceStream = new XpsResourceStream(fontStreamWrapper, uri);
                        resourceStreamCacheItem.XpsResourceStream = fontResourceStream;

                        _fontsCache[resourceId] = resourceStreamCacheItem;

                        resourceStream = fontResourceStream;
                    }
                    catch (COMException)
                    {
                        Invalidate();
                        throw new PrintingCanceledException();
                    }
                }
                else
                {
                    throw new XpsSerializationException(SR.Get(SRID.ReachSerialization_NoFixedPageWriter));
                }
            }
            else
            {
                resourceStream = resourceStreamCacheItem.XpsResourceStream;
                resourceStreamCacheItem.IncRef();
            }

            return(resourceStream);
        }
Esempio n. 3
0
        AcquireResourceStreamForXpsImage(
            string resourceId
            )
        {
            XpsResourceStream resourceStream = null;

            if (resourceId == null)
            {
                throw new ArgumentNullException(nameof(resourceId));
            }

            ContentType contentType = new ContentType(resourceId);

            if (ContentType.Empty.AreTypeAndSubTypeEqual(contentType))
            {
                throw new ArgumentException(SR.Get(SRID.ReachPackaging_InvalidContentType, contentType.ToString()));
            }

            if (_currentXpsImageRef == 0)
            {
                try
                {
                    _currentImageType = GetXpsImageTypeFromContentType(contentType);
                    XpsPrintStream imageStreamWrapper = XpsPrintStream.CreateXpsPrintStream();
                    Uri            imageUri           = _xpsManager.GenerateUniqueUri(contentType);
                    _imageResourceStream = new XpsResourceStream(imageStreamWrapper, imageUri);
                    IStream imageIStream = imageStreamWrapper.GetManagedIStream();

                    IOpcPartUri                   partUri         = GenerateIOpcPartUri(imageUri);
                    IXpsOMImageResource           imageResource   = _xpsOMFactory.CreateImageResource(imageIStream, _currentImageType, partUri);
                    IXpsOMImageResourceCollection imageCollection = _xpsPartResources.GetImageResources();
                    imageCollection.Append(imageResource);
                }
                catch (COMException)
                {
                    Invalidate();
                    throw new PrintingCanceledException();
                }
            }

            _currentXpsImageRef++;
            resourceStream = _imageResourceStream;
            return(resourceStream);
        }
Esempio n. 4
0
        AcquireResourceStreamForXpsResourceDictionary(String resourceId)
        {
            XpsResourceStream resourceStream = null;

            if (_currentXpsResourceDictionaryRef == 0)
            {
                //
                // We need to create the corresponding part in the Xps package
                // and then acquire the Stream
                //
                if (_currentFixedPageHelper != null)
                {
                    String fileName         = FileHelper.GenerateFileName(XpsFileType.ResourceDictionary, _path);
                    Stream dictionaryStream = FileHelper.CreateFile(fileName, _path);

                    //Add image to the fixed page relationships
                    String dictionaryUri = "/" + fileName;
                    _fixedPageRelationshipStream.AddFixedRelationship(_requiredResource, dictionaryUri);

                    _resourceDictionaryResourceStream = new XpsResourceStream(dictionaryStream, new Uri(dictionaryUri, UriKind.Relative));

                    //Add content type to file
                    _contentTypeFile.AddType(XpsFileType.ResourceDictionary,
                                             FileHelper.GetExtension(XpsFileType.ResourceDictionary));
                }
                else
                {
                    throw new ArgumentNullException("Fixed Page Writer was not allocated before XpsResourceDictionary was serialized");
                }
            }

            _currentXpsResourceDictionaryRef++;

            resourceStream = _resourceDictionaryResourceStream;

            return(resourceStream);
        }
Esempio n. 5
0
        /// <Summary>
        ///   Acquires a ResourceStream for an XpsImage.</Summary>
        /// <param name="resourceId">
        ///   The MIME type of the image - image/png, image/jpeg,
        ///   image/tiff, image/vnd.ms-photo.</param>
        public override XpsResourceStream AcquireResourceStreamForXpsImage(String resourceId)
        {
            XpsResourceStream resourceStream = null;

            if (_currentXpsImageRef == 0)
            {
                //
                // We need to create the corresponding part in
                // the Xps package and then acquire the Stream
                //
                if (_currentFixedPageHelper != null)
                {
                    // Create a new image Stream
                    XpsFileType imageType;

                    switch (resourceId)
                    {
                    case "image/png":
                        imageType = XpsFileType.ImagePng;
                        break;

                    case "image/jpeg":
                        imageType = XpsFileType.ImageJpg;
                        break;

                    case "image/tiff":
                        imageType = XpsFileType.ImageTif;
                        break;

                    case "image/vnd.ms-photo":
                        imageType = XpsFileType.ImageWmp;
                        break;

                    default:
                        throw new ArgumentException("Invalid image type");
                    }

                    String fileName    = FileHelper.GenerateFileName(imageType, _path);
                    Stream imageStream = FileHelper.CreateFile(fileName, _path);

                    //Add image to the fixed page relationships
                    String imageUri = "/" + fileName;
                    _fixedPageRelationshipStream.AddFixedRelationship(_requiredResource, imageUri);

                    _imageResourceStream = new XpsResourceStream(imageStream, new Uri(imageUri, UriKind.Relative));

                    //Add content type to file
                    _contentTypeFile.AddType(imageType,
                                             FileHelper.GetExtension(imageType));
                }
                else
                {
                    throw new ArgumentNullException("Fixed Page Writer was not allocated before XpsImage was serialized");
                }
            }
            _currentXpsImageRef++;

            resourceStream = _imageResourceStream;

            return(resourceStream);
        }
Esempio n. 6
0
        // ------------------- AcquireResourceStreamForXpsFont -------------------
        /// <Summary>
        ///  Acquires a ResourceStream for an XpsFont with a specified ID.</Summary>
        /// <param name="resourceId">
        ///   The ID of the Resource.</param>
        public override XpsResourceStream AcquireResourceStreamForXpsFont(String resourceId)
        {
            XpsResourceStream resourceStream = null;

            ResourceStreamCacheItem resourceStreamCacheItem =
                (ResourceStreamCacheItem)_fontsCache[resourceId];

            if (resourceStreamCacheItem == null)
            {
                resourceStreamCacheItem = new ResourceStreamCacheItem();

                //
                // We need to create the corresponding part in the Xps package
                // and then acquire the Stream
                //
                Stream fontStream = null;
                String fileName;
                if (_currentFixedPageHelper != null)
                {
                    // Create a new Font Stream
                    fileName   = FileHelper.GenerateFileName(XpsFileType.Font, _path);
                    fontStream = FileHelper.CreateFile(fileName, _path);

                    if (fontStream != null)
                    {
                        resourceStreamCacheItem.XpsResource = null;
                        //
                        // retreive the appropriate stream and uri from the package API layer
                        //
                        String fileUri = "/" + fileName;
                        _fontResourceStream = new XpsResourceStream(
                            fontStream, new Uri(fileUri, UriKind.Relative));

                        resourceStreamCacheItem.XpsResourceStream = _fontResourceStream;

                        _fontsCache[resourceId] = resourceStreamCacheItem;

                        resourceStream = _fontResourceStream;

                        //Add Obfuscatedfont type to content type file
                        _contentTypeFile.AddType(XpsFileType.ObfuscatedFont,
                                                 FileHelper.GetExtension(XpsFileType.ObfuscatedFont));

                        fontStream = null;
                    }
                    else
                    {
                        throw new ArgumentNullException("Could not create FontStream");
                    }
                }
                else
                {
                    throw new XpsSerializationException("No FixedPage Writer");
                }
            }
            else
            {
                resourceStream = resourceStreamCacheItem.XpsResourceStream;
                resourceStreamCacheItem.IncRef();
            }

            //Add relationship to fixedpage for resource stream
            _fixedPageRelationshipStream.AddFixedRelationship(
                _requiredResource, resourceStream.Uri.ToString());
            return(resourceStream);
        }