If somebody like the post and its helpful in your work then, add comments.

Sunday, March 15, 2009

Inserting Image by Open XML API's

// To add an image part to a package.
public static void AddImagePart(string document, string fileName)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Png);
using (FileStream stream = new FileStream(fileName, FileMode.Open))
{
imagePart.FeedData(stream);
}
string imagePartid = mainPart.GetIdOfPart(imagePart);

XmlDocument mainPartXML = new XmlDocument();
mainPartXML.Load(mainPart.GetStream());
XmlNode MainPartNode = mainPartXML.CreateNode(XmlNodeType.Element, "w:p", mainPartXML.DocumentElement.NamespaceURI);

XmlNamespaceManager XNameSpceMgr = new XmlNamespaceManager(mainPartXML.NameTable);
XNameSpceMgr.AddNamespace("ns", mainPartXML.DocumentElement.NamespaceURI);
XNameSpceMgr.AddNamespace("w", mainPartXML.DocumentElement.NamespaceURI);

// Load the drawing template into an XML document.
XmlDocument drawingXml = new XmlDocument();
drawingXml.Load(@"C:\Documents and Settings\Administrator\Desktop\Image\drawingTemplate.xml");
//Load the drawing template into an XML document and pass the reference ID parameter.
drawingXml.LoadXml(string.Format(drawingXml.InnerXml, imagePartid));
XmlNamespaceManager XNameSpceImageMgr = new XmlNamespaceManager(drawingXml.NameTable);
XNameSpceImageMgr.AddNamespace("w", drawingXml.DocumentElement.NamespaceURI);
// Load the drawing template into an XML document and pass the reference ID parameter.
drawingXml.LoadXml(string.Format(drawingXml.InnerXml, imagePartid));
XmlNode XNode = mainPartXML.SelectSingleNode("//ns:body/ns:p", XNameSpceMgr);
XmlNode XNodeParent = mainPartXML.SelectSingleNode("//ns:body", XNameSpceMgr);
MainPartNode.InnerXml = drawingXml.FirstChild.InnerXml.ToString();
XNodeParent.AppendChild(MainPartNode);
mainPartXML.Save(mainPart.GetStream());
wordDoc.Close();
}
}

drawingTemplate.xml

No comments:

Post a Comment