internal ExcelPicture(ExcelDrawings drawings, XmlNode node) : base(drawings, node, "xdr:pic/xdr:nvPicPr/xdr:cNvPr/@name") { XmlNode picNode = node.SelectSingleNode("xdr:pic/xdr:blipFill/a:blip", drawings.NameSpaceManager); if (picNode != null) { RelPic = drawings.Part.GetRelationship(picNode.Attributes["r:embed"].Value); UriPic = UriHelper.ResolvePartUri(drawings.UriDrawing, RelPic.TargetUri); Part = drawings.Part.Package.GetPart(UriPic); FileInfo f = new FileInfo(UriPic.OriginalString); ContentType = GetContentType(f.Extension); _image = Image.FromStream(Part.GetStream()); ImageConverter ic=new ImageConverter(); var iby=(byte[])ic.ConvertTo(_image, typeof(byte[])); var ii = _drawings._package.LoadImage(iby, UriPic, Part); ImageHash = ii.Hash; string relID = GetXmlNodeString("xdr:pic/xdr:nvPicPr/xdr:cNvPr/a:hlinkClick/@r:id"); if (!string.IsNullOrEmpty(relID)) { HypRel = drawings.Part.GetRelationship(relID); if (HypRel.TargetUri.IsAbsoluteUri) { _hyperlink = new ExcelHyperLink(HypRel.TargetUri.AbsoluteUri); } else { _hyperlink = new ExcelHyperLink(HypRel.TargetUri.OriginalString, UriKind.Relative); } ((ExcelHyperLink)_hyperlink).ToolTip = GetXmlNodeString("xdr:pic/xdr:nvPicPr/xdr:cNvPr/a:hlinkClick/@tooltip"); } } }
/// <summary> /// Method to create file at the temp folder /// </summary> /// <param name="rootFolder"></param> /// <param name="contentFileURI"></param> /// <returns></returns> private void createFile(string rootFolder, ZipPackagePart contentFile) { // Initially create file under the folder specified string contentFilePath = string.Empty; contentFilePath =contentFile.Uri.OriginalString.Replace('/', System.IO.Path.DirectorySeparatorChar); if (contentFilePath.StartsWith( System.IO.Path.DirectorySeparatorChar.ToString())) { contentFilePath = contentFilePath.TrimStart( System.IO.Path.DirectorySeparatorChar); } else { //do nothing } contentFilePath = System.IO.Path.Combine(rootFolder, contentFilePath); //contentFilePath = System.IO.Path.Combine(rootFolder, contentFilePath); //Check for the folder already exists. If not then create that folder if (System.IO.Directory.Exists( System.IO.Path.GetDirectoryName(contentFilePath)) != true) { System.IO.Directory.CreateDirectory( System.IO.Path.GetDirectoryName(contentFilePath)); } else { //do nothing } System.IO.FileStream newFileStream = System.IO.File.Create( contentFilePath ); newFileStream.Close(); byte[] content = new byte[contentFile.GetStream().Length]; contentFile.GetStream().Read(content, 0, content.Length ); System.IO.File.WriteAllBytes(contentFilePath, content); }
private static void ExtractFile(string rootFolder, ZipPackagePart contentFile) { try { string contentFilePath = contentFile.Uri.OriginalString.Replace('/', Path.DirectorySeparatorChar); if (contentFilePath.StartsWith(Path.DirectorySeparatorChar.ToString())) { contentFilePath = contentFilePath.TrimStart(Path.DirectorySeparatorChar); } contentFilePath = Path.Combine(rootFolder, contentFilePath); if (Directory.Exists(Path.GetDirectoryName(contentFilePath)) != true) { Directory.CreateDirectory(Path.GetDirectoryName(contentFilePath)); } FileStream newFileStream = System.IO.File.Create(contentFilePath); newFileStream.Close(); byte[] content = new byte[contentFile.GetStream().Length]; contentFile.GetStream().Read(content, 0, content.Length); System.IO.File.WriteAllBytes(contentFilePath, content); } catch (Exception ex) { Utilities.OnError(Utilities.GetCurrentMethod(), ex); } }