/// <summary>
        /// A helper method that decompresses the the Ribbon data returned
        /// </summary>
        /// <param name="data">The compressed ribbon data</param>
        /// <returns></returns>
        private byte[] unzipRibbon(byte[] data)
        {
            System.IO.Packaging.ZipPackage package = null;
            MemoryStream memStream = null;

            memStream = new MemoryStream();
            memStream.Write(data, 0, data.Length);
            package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open);

            ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/RibbonXml.xml", UriKind.Relative));

            using (Stream strm = part.GetStream()) {
                long   len  = strm.Length;
                byte[] buff = new byte[len];
                strm.Read(buff, 0, (int)len);
                return(buff);
            }
        }
        /// <summary>   Attempts to get the NuGet package metadata from the given package. </summary>
        /// <param name="package">  The package.</param>
        /// <param name="metadata"> The package metadata.</param>
        /// <returns>   true if it succeeds, false if it fails. </returns>
        private static bool TryGetPackageMetadata(ZipPackage package, out ManifestMetadata metadata)
        {
            var packageRelationship = package.GetRelationshipsByType("http://schemas.microsoft.com/packaging/2010/07/manifest")
                                      .SingleOrDefault( );

            if (packageRelationship == null)
            {
                metadata = null;
                return(false);
            }
            var manifestPart = package.GetPart(packageRelationship.TargetUri);

            using (var partStream = manifestPart.GetStream( ))
            {
                var manifest = Manifest.ReadFrom(partStream, NullPropertyProvider.Instance, validateSchema: false);
                metadata = manifest.Metadata;
                return(true);
            }
        }
Ejemplo n.º 3
0
        private static void TryUpdatePackageId(ZipPackage package, string signedPackageId)
        {
            // Update package id
            var manifestRelationType = package.GetRelationshipsByType("http://schemas.microsoft.com/packaging/2010/07/manifest").SingleOrDefault();

            if (manifestRelationType != null)
            {
                var manifestPart = package.GetPart(manifestRelationType.TargetUri);
                var manifest     = Manifest.ReadFrom(manifestPart.GetStream(), NullPropertyProvider.Instance, false);
                manifest.Metadata.Id = signedPackageId;

                package.DeleteRelationship(manifestRelationType.Id);
                package.DeletePart(manifestPart.Uri);

                Uri uri             = PackUriHelper.CreatePartUri(new Uri(string.Format("/{0}.nuspec", signedPackageId), UriKind.Relative));
                var newManifestPart = package.CreatePart(uri, "application/octet", CompressionOption.Maximum);
                manifest.Save(newManifestPart.GetStream(FileMode.Create));
                package.CreateRelationship(uri, TargetMode.Internal, "http://schemas.microsoft.com/packaging/2010/07/manifest");
            }
        }
        private static void ReadPartOfPackage(ZipPackage package, string partName, Action<XmlReader> partsReader)
        {
            Uri partUri = new Uri(partName, UriKind.Relative);
            if (!package.PartExists(partUri))
            {
                return;
            }
            var part = (ZipPackagePart)package.GetPart(partUri);
            var stream = part.GetStream();
            if (stream.Length == 0)
            {
                return;

            }

            using (var reader = new XmlTextReader(stream))
            {
                partsReader(reader);
            }
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Gets an XML reader for the specified part, or null, if the part not exists.
 /// </summary>
 static XmlTextReader GetPartAsXmlReader(ZipPackage package, Uri uri)
 {
   ZipPackagePart part = package.GetPart(uri) as ZipPackagePart;
   string xml = String.Empty;
   using (Stream stream = part.GetStream())
   {
     using (StreamReader sr = new StreamReader(stream))
     {
       xml = sr.ReadToEnd();
     }
   }
   XmlTextReader reader = new XmlTextReader(new StringReader(xml));
   return reader;
 }
Ejemplo n.º 6
0
    /// <summary>
    /// Gets the specified part as string. Returns an empty string if the part not exists.
    /// </summary>
    static string GetPartAsString(ZipPackage package, Uri uri)
    {
      ZipPackagePart part = package.GetPart(uri) as ZipPackagePart;
      string xml = String.Empty;
      using (Stream stream = part.GetStream())
      {
        using (StreamReader sr = new StreamReader(stream))
        {
          xml = sr.ReadToEnd();
#if true_
          string xmlPath = IOPath.Combine(IOPath.GetDirectoryName(xpsFilename), IOPath.GetFileNameWithoutExtension(xpsFilename)) + ".xml";
          using (StreamWriter sw = new StreamWriter(xmlPath))
          {
            sw.Write(xml);
          }
#endif
          //XpsElement el = PdfSharp.Xps.Parsing.XpsParser.Parse(xml);
          //PdfRenderer renderer = new PdfRenderer();
          //renderer.RenderPage(page, el as PdfSharp.Xps.XpsModel.FixedPage);
        }
      }
      return xml;
    }
Ejemplo n.º 7
0
    internal static byte[] GetPartAsBytes(ZipPackage package, string uriString)
    {
      Uri target = new Uri(uriString, UriKind.Relative);
#if true
      if (!uriString.StartsWith("/"))
      {
        //target = PackUriHelper.ResolvePartUri(package.t.GetRelationship Uri("/documents2/3/Pages", UriKind.RelativeOrAbsolute), target);
        //PackagePartCollection coll = package.GetParts();
        // HACK: introduce a "CurrentPart"
        target = PackUriHelper.ResolvePartUri(new Uri("/documents/1/Pages/1.page", UriKind.RelativeOrAbsolute), target);
      }
#else
      // HACK: just make it go...
      if (!uriString.StartsWith("/"))
        uriString = "/" + uriString;

      // Documents with relative uri exists.
      if (uriString.StartsWith("/.."))
        uriString = uriString.Substring(3);
#endif
      ZipPackagePart part = package.GetPart(target) as ZipPackagePart;

      byte[] bytes = null;
      using (Stream stream = part.GetStream())
      {
        int length = (int)stream.Length;
        bytes = new byte[length];
        stream.Read(bytes, 0, length);
      }
      return bytes;
    }
Ejemplo n.º 8
0
    internal static XmlTextReader GetPartAsXmlReader(ZipPackage package, string uriString)
    {
      // HACK: just make it work...
      if (!uriString.StartsWith("/"))
        uriString = "/" + uriString;

      // Documents with relative uri exists.
      if (uriString.StartsWith("/.."))
        uriString = uriString.Substring(3);

      ZipPackagePart part = package.GetPart(new Uri(uriString, UriKind.Relative)) as ZipPackagePart;
      string xml = String.Empty;
      using (Stream stream = part.GetStream())
      {
        using (StreamReader sr = new StreamReader(stream))
        {
          xml = sr.ReadToEnd();
        }
      }
      XmlTextReader reader = new XmlTextReader(new StringReader(xml));
      return reader;
    }
Ejemplo n.º 9
0
        private static void TryUpdatePackageId(ZipPackage package, string signedPackageId)
        {
            // Update package id
            var manifestRelationType = package.GetRelationshipsByType("http://schemas.microsoft.com/packaging/2010/07/manifest").SingleOrDefault();
            if (manifestRelationType != null)
            {
                var manifestPart = package.GetPart(manifestRelationType.TargetUri);
                var manifest = Manifest.ReadFrom(manifestPart.GetStream(), NullPropertyProvider.Instance, false);
                manifest.Metadata.Id = signedPackageId;

                package.DeleteRelationship(manifestRelationType.Id);
                package.DeletePart(manifestPart.Uri);

                Uri uri = PackUriHelper.CreatePartUri(new Uri(string.Format("/{0}.nuspec", signedPackageId), UriKind.Relative));
                var newManifestPart = package.CreatePart(uri, "application/octet", CompressionOption.Maximum);
                manifest.Save(newManifestPart.GetStream(FileMode.Create));
                package.CreateRelationship(uri, TargetMode.Internal, "http://schemas.microsoft.com/packaging/2010/07/manifest");
            }
        }