private void GetSolutionFiles(string selectedPath, out XDocument docSolution, out XDocument docCustomizations) { docSolution = null; docCustomizations = null; using (FileStream fileStream = new FileStream(selectedPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (ZipPackage package = (ZipPackage)ZipPackage.Open(fileStream, FileMode.Open, FileAccess.Read)) { { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/solution.xml", UriKind.Relative)); if (part != null) { using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { docSolution = XDocument.Load(streamPart); } } } { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/customizations.xml", UriKind.Relative)); if (part != null) { using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { docCustomizations = XDocument.Load(streamPart); } } } } } }
public static string GetApplicationRibbonDiffXmlFromSolutionBody(byte[] fileBody) { string result = string.Empty; using (var memStream = new MemoryStream()) { memStream.Write(fileBody, 0, fileBody.Length); using (ZipPackage package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open, FileAccess.ReadWrite)) { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/customizations.xml", UriKind.Relative)); if (part != null) { XDocument doc = null; using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { doc = XDocument.Load(streamPart); } var ribbonDiffXml = doc.XPathSelectElement("ImportExportXml/RibbonDiffXml"); if (ribbonDiffXml != null) { result = ribbonDiffXml.ToString(); } } } } return(result); }
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); }
internal static void LoadCrtx(Stream stream, out XmlDocument chartXml, out XmlDocument styleXml, out XmlDocument colorsXml, out ZipPackagePart themePart, string fileName) { chartXml = null; styleXml = null; colorsXml = null; themePart = null; try { ZipPackage p = new ZipPackage(stream); var chartRel = p.GetRelationshipsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument").FirstOrDefault(); if (chartRel != null) { var chartPart = p.GetPart(chartRel.TargetUri); chartXml = new XmlDocument(); chartXml.Load(chartPart.GetStream()); var rels = chartPart.GetRelationships(); foreach (var rel in rels) { var part = p.GetPart(UriHelper.ResolvePartUri(rel.SourceUri, rel.TargetUri)); switch (rel.RelationshipType) { case ExcelPackage.schemaThemeOverrideRelationships: themePart = part; break; case ExcelPackage.schemaChartStyleRelationships: styleXml = new XmlDocument(); styleXml.Load(part.GetStream()); break; case ExcelPackage.schemaChartColorStyleRelationships: colorsXml = new XmlDocument(); colorsXml.Load(part.GetStream()); break; } } } } catch (Exception ex) { throw new InvalidDataException($"{fileName} has an invalid format", ex); } }
private void FinishHeaderOrFooter() { if (_currentPart.Writer.Location == _currentPart.StartingLocation) { OpenXmlParagraphModel.WriteInvisibleParagraph(_currentPart.Writer.TextWriter); } WriteCloseTag(_currentPart.Part.Tag); Stream stream = ZipPackage.GetPart(new Uri(PartManager.CleanName(_currentPart.PartName), UriKind.Relative)).GetStream(); _currentPart.Writer.Interleave(stream, WriteInterleaverToHeaderOrFooter); _currentPart.Stream.Dispose(); _currentPart = _documentPart; }
/// <summary> /// Loads a .thmx file as a stream. Thmx files are exported from a Spread Sheet Application like Excel /// </summary> /// <param name="thmxStream">The thmx file as a stream</param> public void Load(Stream thmxStream) { ZipPackage p = new ZipPackage(thmxStream); var themeManagerRel = p.GetRelationshipsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument").FirstOrDefault(); if (themeManagerRel != null) { var themeManager = p.GetPart(themeManagerRel.TargetUri); var themeRel = themeManager.GetRelationshipsByType(ExcelPackage.schemaThemeRelationships).FirstOrDefault(); if (themeRel != null) { var themePart = p.GetPart(UriHelper.ResolvePartUri(themeRel.SourceUri, themeRel.TargetUri)); var themeXml = new XmlDocument(); XmlHelper.LoadXmlSafe(themeXml, themePart.GetStream()); Load(themeXml); foreach (var rel in themePart.GetRelationships()) { var partToCopy = p.GetPart(UriHelper.ResolvePartUri(rel.SourceUri, rel.TargetUri)); var uri = UriHelper.ResolvePartUri(_theme.ThemeUri, rel.TargetUri); var part = _wb._package.ZipPackage.CreatePart(uri, partToCopy.ContentType); var stream = part.GetStream(); var b = partToCopy.GetStream().ToArray(); stream.Write(b, 0, b.Length); stream.Flush(); _theme.Part.CreateRelationship(uri, TargetMode.Internal, rel.RelationshipType); } SetNormalStyle(); } else { throw new InvalidDataException("Thmx file is corrupt. Can't find theme part"); } } else { throw new InvalidDataException("Thmx file is corrupt."); } }
internal void Save() { _sectionProperties.WriteToBody(_currentPart.Writer.TextWriter, _currentHeaderFooterReferences); _firstSection = true; _sectionProperties.Continuous = false; WriteCloseTag(CT_Document.BodyElementName); WriteCloseTag(_currentPart.Part.Tag); Stream stream = ZipPackage.GetPart(new Uri(PartManager.CleanName(_currentPart.PartName), UriKind.Relative)).GetStream(); _currentPart.Writer.Interleave(stream, WriteInterleaverToDocument); WriteNumberingPart(); _manager.Write(); }
public static byte[] ReplaceApplicationRibbonDiffXmlInSolutionBody(byte[] solutionBodyBinary, XElement newRibbonDiffXml) { using (var memStream = new MemoryStream()) { memStream.Write(solutionBodyBinary, 0, solutionBodyBinary.Length); using (ZipPackage package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open, FileAccess.ReadWrite)) { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/customizations.xml", UriKind.Relative)); if (part != null) { XDocument doc = null; using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { doc = XDocument.Load(streamPart); } var ribbonDiffXml = doc.XPathSelectElement("ImportExportXml/RibbonDiffXml"); if (ribbonDiffXml != null) { ribbonDiffXml.ReplaceWith(newRibbonDiffXml); } using (Stream streamPart = part.GetStream(FileMode.Create, FileAccess.Write)) { XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, Encoding = Encoding.UTF8 }; using (XmlWriter xmlWriter = XmlWriter.Create(streamPart, settings)) { doc.Save(xmlWriter); xmlWriter.Flush(); } } } } memStream.Position = 0; byte[] result = memStream.ToArray(); return(result); } }
/// <summary> /// User selected to SAVE the selected open part /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton3_Click(object sender, EventArgs e) { // open the package using (ZipPackage LobjZip = (ZipPackage)ZipPackage.Open(MstrPath, FileMode.Open, FileAccess.ReadWrite)) { string LstrUri = label1.Text; ZipPackagePart LobjPart = (ZipPackagePart)LobjZip.GetPart(new Uri(LstrUri, UriKind.Relative)); Stream LobjStream = LobjPart.GetStream(FileMode.Open, FileAccess.ReadWrite); LobjStream.SetLength(0); LobjStream.Flush(); StreamWriter LobjSw = new StreamWriter(LobjStream); LobjSw.Write(lineNumberTextBox1.Text); LobjSw.Close(); } toolStripButton3.Enabled = false; }
/// <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); }
internal void ResetRecordXml(ZipPackage pck) { var cacheRecord = new XmlDocument(); cacheRecord.LoadXml("<pivotCacheRecords xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" count=\"0\" />"); ZipPackagePart recPart; if (pck.PartExists(CacheRecordUri)) { recPart = pck.GetPart(CacheRecordUri); } else { recPart = pck.CreatePart(CacheRecordUri, ExcelPackage.schemaPivotCacheRecords); } cacheRecord.Save(recPart.GetStream(FileMode.Create, FileAccess.Write)); }
private void ImportPartOfPackage(ZipPackage package, string partName) { Uri partUri = new Uri(partName, UriKind.Relative); if (package.PartExists(partUri)) { var part = (ZipPackagePart)package.GetPart(partUri); var stream = part.GetStream(); if (stream.Length > 0) { using (var reader = new XmlTextReader(stream)) { ImportStream(package, reader); } } } }
private void GetSection1M(byte[] dataMashupBytes) { //Only reading section1.M from packaging parts int packagingPartsLength = BitConverter.ToUInt16(dataMashupBytes.Skip(4).Take(4).ToArray(), 0); byte[] packagingPartsBytes = dataMashupBytes.Skip(8).Take(packagingPartsLength).ToArray(); using (MemoryStream packagingPartsStream = new MemoryStream(packagingPartsBytes)) { var packagingParts = new ZipPackage(packagingPartsStream); ZipPackagePart section1M = packagingParts.GetPart(new Uri("/Formulas/Section1.m", UriKind.Relative)); if (section1M == null) { return; } using (var reader = new StreamReader(section1M.GetStream())) PowerQueryFormulas = reader.ReadToEnd(); } }
public static string GetRibbonDiffXmlForEntityFromSolutionBody(string entityName, byte[] fileBody) { string result = string.Empty; using (var memStream = new MemoryStream()) { memStream.Write(fileBody, 0, fileBody.Length); using (ZipPackage package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open, FileAccess.ReadWrite)) { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/customizations.xml", UriKind.Relative)); if (part != null) { XDocument doc = null; using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { doc = XDocument.Load(streamPart); } var nodes = doc.XPathSelectElements("ImportExportXml/Entities/Entity"); foreach (var item in nodes) { var elementName = item.Element("Name"); if (elementName != null && string.Equals(elementName.Value, entityName, StringComparison.InvariantCultureIgnoreCase)) { var ribbonDiffXml = item.Element("RibbonDiffXml"); if (ribbonDiffXml != null) { result = ribbonDiffXml.ToString(); break; } } } } } } return(result); }
public static byte[] UnzipCrmTranslations(byte[] data, string filepath) { using (MemoryStream memStream = new MemoryStream()) { memStream.Write(data, 0, data.Length); using (ZipPackage package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open)) { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri(filepath, UriKind.Relative)); using (Stream strm = part.GetStream()) { long len = strm.Length; byte[] buff = new byte[len]; strm.Read(buff, 0, (int)len); return(buff); } } } }
public static byte[] UnzipRibbon(byte[] data) { using (var memStream = new MemoryStream()) { memStream.Write(data, 0, data.Length); using (ZipPackage 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); } } } }
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); } }
internal static byte[] GetPartAsBytes(ZipPackage package, string uriString) { Uri target = new Uri(uriString, UriKind.Relative); 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); } 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); }
/// <summary> /// User clicked EXPORT to export a part /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton5_Click(object sender, EventArgs e) { // get the filename for the part string LstrFn = label1.Text.Substring(label1.Text.LastIndexOf('/')).Replace("/", ""); // ask the user SaveFileDialog LobjSfd = new SaveFileDialog(); LobjSfd.Filter = "All Files (*.*)|*.*"; LobjSfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); LobjSfd.FileName = LobjSfd.InitialDirectory + "\\" + LstrFn; if (LobjSfd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) { return; } // open the package using (ZipPackage LobjZip = (ZipPackage)ZipPackage.Open(MstrPath, FileMode.Open, FileAccess.Read)) { if (new FileInfo(LobjSfd.FileName).Exists) { new FileInfo(LobjSfd.FileName).Delete(); } // get the uri string LstrUri = label1.Text; // grab the part ZipPackagePart LobjPart = (ZipPackagePart)LobjZip.GetPart(new Uri(LstrUri, UriKind.Relative)); // write the part to disk StreamReader LobjSr = new StreamReader(LobjPart.GetStream(FileMode.Open, FileAccess.Read)); BinaryWriter LobjSw = new BinaryWriter(new FileInfo(LobjSfd.FileName).Create()); while (!LobjSr.EndOfStream) { LobjSw.Write(LobjSr.Read()); } LobjSw.Close(); LobjSr.Close(); } }
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); }
/// <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); }
/// <summary> /// A first hack to do the job... /// </summary> public static void RenderPage_Test01(PdfPage page, string xpsFilename) { //XpsDocument xpsdoc = new XpsDocument(xpsFilename, System.IO.FileAccess.Read); //FixedDocument fds = xpsdoc.GetFixedDocument(); //DocumentReferenceCollection docrefs = fds.References; //DocumentReference docref = docrefs[0]; //Uri uri1 = docref.Source; //FixedDocument fixeddoc = docref.GetDocument(false); //PageContent content = fixeddoc.Pages[0]; //Uri uri2 = content.Source; //FixedPage fixedPage = content.Child; //xpsdoc.Close(); // /Documents/1/Pages/1.fpage try { #if true XpsDocument doc = XpsDocument.Open(xpsFilename); FixedPage fpage = doc.GetDocument().GetFixedPage(0); //ZipPackage pack = ZipPackage.Open(xpsFilename) as ZipPackage; Uri uri = new Uri("/Documents/1/Pages/1.fpage", UriKind.Relative); ZipPackagePart part = doc.Package.GetPart(uri) as ZipPackagePart; using (Stream stream = part.GetStream()) { using (StreamReader sr = new StreamReader(stream)) { string 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 DocumentRenderingContext context = new DocumentRenderingContext(page.Owner); //XpsElement el = PdfSharp.Xps.Parsing.XpsParser.Parse(xml); PdfRenderer renderer = new PdfRenderer(); renderer.RenderPage(page, fpage); } } #else ZipPackage pack = ZipPackage.Open(xpsFilename) as ZipPackage; Uri uri = new Uri("/Documents/1/Pages/1.fpage", UriKind.Relative); ZipPackagePart part = pack.GetPart(uri) as ZipPackagePart; using (Stream stream = part.GetStream()) { using (StreamReader sr = new StreamReader(stream)) { string 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); } } #endif } catch { //DaSt : } }
public static byte[] ReplaceRibbonDiffXmlForEntityInSolutionBody(string entityLogicalName, byte[] solutionBodyBinary, XElement newRibbonDiffXml) { using (var memStream = new MemoryStream()) { memStream.Write(solutionBodyBinary, 0, solutionBodyBinary.Length); using (ZipPackage package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open, FileAccess.ReadWrite)) { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/customizations.xml", UriKind.Relative)); if (part != null) { XDocument doc = null; using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { doc = XDocument.Load(streamPart); } var nodes = doc.XPathSelectElements("ImportExportXml/Entities/Entity"); foreach (var item in nodes) { var elementName = item.Element("Name"); if (elementName != null && string.Equals(elementName.Value, entityLogicalName, StringComparison.InvariantCultureIgnoreCase)) { var ribbonDiffXml = item.Element("RibbonDiffXml"); if (ribbonDiffXml != null) { ribbonDiffXml.ReplaceWith(newRibbonDiffXml); } break; } } using (Stream streamPart = part.GetStream(FileMode.Create, FileAccess.Write)) { XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, Encoding = Encoding.UTF8 }; using (XmlWriter xmlWriter = XmlWriter.Create(streamPart, settings)) { doc.Save(xmlWriter); xmlWriter.Flush(); } } } } memStream.Position = 0; byte[] result = memStream.ToArray(); return(result); } }
private byte[] OverrideSolutionInformation(byte[] fileBody, ExportSolutionOverrideInformation solutionInfo) { using (var memStream = new MemoryStream()) { memStream.Write(fileBody, 0, fileBody.Length); using (ZipPackage package = (ZipPackage)ZipPackage.Open(memStream, FileMode.Open, FileAccess.ReadWrite)) { ZipPackagePart part = (ZipPackagePart)package.GetPart(new Uri("/solution.xml", UriKind.Relative)); if (part != null) { XDocument doc = null; using (Stream streamPart = part.GetStream(FileMode.Open, FileAccess.Read)) { doc = XDocument.Load(streamPart); } if (solutionInfo.OverrideNameAndVersion) { if (!string.IsNullOrEmpty(solutionInfo.UniqueName)) { var uniqueNameNode = doc.XPathSelectElement("ImportExportXml/SolutionManifest/UniqueName"); if (uniqueNameNode != null) { uniqueNameNode.Value = solutionInfo.UniqueName; } } if (!string.IsNullOrEmpty(solutionInfo.DisplayName)) { var labelNode = doc.XPathSelectElements("ImportExportXml/SolutionManifest/LocalizedNames/LocalizedName"); if (labelNode.Any()) { foreach (var node in labelNode) { node.SetAttributeValue("description", solutionInfo.DisplayName); } } } if (!string.IsNullOrEmpty(solutionInfo.Version)) { var versionNode = doc.XPathSelectElement("ImportExportXml/SolutionManifest/Version"); if (versionNode != null) { versionNode.Value = solutionInfo.Version; } } } if (solutionInfo.OverrideDescription) { var labelNode = doc.XPathSelectElements("ImportExportXml/SolutionManifest/Descriptions/Description"); if (labelNode.Any()) { foreach (var node in labelNode) { node.SetAttributeValue("description", solutionInfo.Description); } } } using (Stream streamPart = part.GetStream(FileMode.Create, FileAccess.Write)) { XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, Encoding = Encoding.UTF8 }; using (XmlWriter xmlWriter = XmlWriter.Create(streamPart, settings)) { doc.Save(xmlWriter); xmlWriter.Flush(); } } } } memStream.Position = 0; byte[] result = memStream.ToArray(); return(result); } }
/// <summary> /// The user clicked a node inthe TreeView /// </summary> /// <param name="PobjSender"></param> /// <param name="PobjEventArgs"></param> private void treeView1_AfterSelect_1(object PobjSender, TreeViewEventArgs PobjEventArgs) { if (MbolInSelect) { return; } // is the document dirty? And are we on the Edit tab if (toolStripButton3.Enabled && tabControl1.SelectedTab == tabPage2) { DialogResult LobjDr = MessageBox.Show("Are you sure you want to switch? \n\n" + "The currently loaded part [" + label1.Text + "] has not been saved.", "Save Loaded Part", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (LobjDr == DialogResult.Yes) { toolStripButton3_Click(null, null); } else if (LobjDr == System.Windows.Forms.DialogResult.Cancel) { MbolInSelect = true; treeView1.SelectedNode = MobjPreviousNode; MbolInSelect = false; return; } } // reset the form MobjPreviousNode.BackColor = SystemColors.Window; MobjPreviousNode = PobjEventArgs.Node; MobjPreviousNode.BackColor = SystemColors.MenuHighlight; lineNumberTextBox1.Text = ""; webBrowser1.DocumentText = ""; toolStripButton3.Enabled = false; toolStripButton4.Enabled = false; label1.Text = PobjEventArgs.Node.FullPath.Substring(1).Replace("\\", "/"); toolStripButton5.Enabled = true; // always allow export // determine the PART type - if it is not VML or XML, then do not try to // read it. if (!PobjEventArgs.Node.FullPath.ToLower().EndsWith(".xml") && !PobjEventArgs.Node.FullPath.ToLower().EndsWith(".rels") && !PobjEventArgs.Node.FullPath.ToLower().EndsWith(".vml")) { // hide the text panes - since this part cannot be shown removeTabPages(); // if the type is an image, then we will show it if (PobjEventArgs.Node.FullPath.ToLower().EndsWith("jpeg") || PobjEventArgs.Node.FullPath.ToLower().EndsWith("jpg") || PobjEventArgs.Node.FullPath.ToLower().EndsWith("png") || PobjEventArgs.Node.FullPath.ToLower().EndsWith("bmp") || PobjEventArgs.Node.FullPath.ToLower().EndsWith("wmf") || PobjEventArgs.Node.FullPath.ToLower().EndsWith("emf")) { tabControl1.TabPages.Add(tabPage3); tabPage3.Select(); using (ZipPackage LobjZip = (ZipPackage)ZipPackage.Open(MstrPath, FileMode.Open, FileAccess.Read)) { // get the URI for th part string LstrUri = PobjEventArgs.Node.FullPath.Substring(1).Replace("\\", "/"); // grab the part ZipPackagePart LobjPart = (ZipPackagePart)LobjZip.GetPart(new Uri(LstrUri, UriKind.Relative)); Stream LobjBaseStream = LobjPart.GetStream(FileMode.Open, FileAccess.Read); pictureBox1.Image = new Bitmap(LobjBaseStream); LobjBaseStream.Close(); } } return; } else { // show the text panes removeTabPages(); tabControl1.TabPages.Add(tabPage1); tabControl1.TabPages.Add(tabPage2); } try { // open the part to read the XML using (ZipPackage LobjZip = (ZipPackage)ZipPackage.Open(MstrPath, FileMode.Open, FileAccess.Read)) { // get the URI for th part string LstrUri = PobjEventArgs.Node.FullPath.Substring(1).Replace("\\", "/"); // grab the part ZipPackagePart LobjPart = (ZipPackagePart)LobjZip.GetPart(new Uri(LstrUri, UriKind.Relative)); Stream LobjBaseStream = LobjPart.GetStream(FileMode.Open, FileAccess.Read); MemoryStream LobjMemoryStream = new MemoryStream(); LobjBaseStream.CopyTo(LobjMemoryStream); LobjBaseStream.Close(); // load the stream into a string LobjMemoryStream.Position = 0; string LstrXml = new StreamReader(LobjMemoryStream, Encoding.UTF8).ReadToEnd(); webBrowser1.DocumentText = LstrXml; LobjMemoryStream.Position = 0; // format the string lineNumberTextBox1.Text = FormatXml(LstrXml); //Highlight(); } toolStripButton3.Enabled = false; toolStripButton4.Enabled = true; this.Refresh(); } catch { } }