/// <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); } }
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); } }
/// <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; }
/// <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; }
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; }
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; }
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"); } }