{"id":3055,"date":"2016-03-19T10:06:51","date_gmt":"2016-03-19T10:06:51","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=3055"},"modified":"2016-03-20T09:49:22","modified_gmt":"2016-03-20T09:49:22","slug":"replacing-a-picture-in-a-picture-content-control-in-an-open-xml-wordprocessingml-document","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/replacing-a-picture-in-a-picture-content-control-in-an-open-xml-wordprocessingml-document\/","title":{"rendered":"Replacing a Picture in a Picture Content Control in an Open XML WordprocessingML Document"},"content":{"rendered":"<p>You may have a picture content control where you want to replace the picture with a different picture.  This post shows the Open XML SDK V2 code that is necessary to find a picture content control with an alias of \u201cMyPicture\u201d.  It then finds the ImagePart, and then replaces the contents of the image part with a different image.<\/p>\n<pre class=\"prettyprint\"><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">System<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Collections<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Generic<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"pln\">IO<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Linq<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">System<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Text<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">DocumentFormat<\/span><span class=\"pun\">.<\/span><span class=\"typ\">OpenXml<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Packaging<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">DocumentFormat<\/span><span class=\"pun\">.<\/span><span class=\"typ\">OpenXml<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Wordprocessing<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"typ\">DocumentFormat<\/span><span class=\"pun\">.<\/span><span class=\"typ\">OpenXml<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Drawing<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br><\/span><span class=\"kwd\">class<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Program<\/span><span class=\"pln\"><br><\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; <\/span><span class=\"kwd\">static<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">void<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Main<\/span><span class=\"pun\">(<\/span><span class=\"kwd\">string<\/span><span class=\"pun\">[]<\/span><span class=\"pln\"> args<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"typ\">WordprocessingDocument<\/span><span class=\"pln\"> doc <\/span><span class=\"pun\">=<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">WordprocessingDocument<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Open<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"Test1.docx\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">true<\/span><span class=\"pun\">))<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">SdtBlock<\/span><span class=\"pln\"> cc <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> doc<\/span><span class=\"pun\">.<\/span><span class=\"typ\">MainDocumentPart<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Document<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Body<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Descendants<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">SdtBlock<\/span><span class=\"pun\">&gt;()<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">.<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">(<\/span><span class=\"pln\">c <\/span><span class=\"pun\">=&gt;<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">SdtProperties<\/span><span class=\"pln\"> p <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> c<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Elements<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">SdtProperties<\/span><span class=\"pun\">&gt;().<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">();<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">p <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"com\">\/\/ Is it a picture content control?<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">SdtContentPicture<\/span><span class=\"pln\"> pict <\/span><span class=\"pun\">=<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Elements<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">SdtContentPicture<\/span><span class=\"pun\">&gt;().<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">();<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"com\">\/\/ Get the alias.<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">SdtAlias<\/span><span class=\"pln\"> a <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> p<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Elements<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">SdtAlias<\/span><span class=\"pun\">&gt;().<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">();<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">pict <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pln\"> <\/span><span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> a<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Val<\/span><span class=\"pln\"> <\/span><span class=\"pun\">==<\/span><span class=\"pln\"> <\/span><span class=\"str\">\"MyPicture\"<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">return<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">true<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">return<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">false<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">});<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">string<\/span><span class=\"pln\"> embed <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">cc <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">Drawing<\/span><span class=\"pln\"> dr <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> cc<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Descendants<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">Drawing<\/span><span class=\"pun\">&gt;().<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">();<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">dr <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">Blip<\/span><span class=\"pln\"> blip <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> dr<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Descendants<\/span><span class=\"pun\">&lt;<\/span><span class=\"typ\">Blip<\/span><span class=\"pun\">&gt;().<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">();<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">blip <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; embed <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> blip<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Embed<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">embed <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">IdPartPair<\/span><span class=\"pln\"> idpp <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> doc<\/span><span class=\"pun\">.<\/span><span class=\"typ\">MainDocumentPart<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Parts<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">.<\/span><span class=\"typ\">Where<\/span><span class=\"pun\">(<\/span><span class=\"pln\">pa <\/span><span class=\"pun\">=&gt;<\/span><span class=\"pln\"> pa<\/span><span class=\"pun\">.<\/span><span class=\"typ\">RelationshipId<\/span><span class=\"pln\"> <\/span><span class=\"pun\">==<\/span><span class=\"pln\"> embed<\/span><span class=\"pun\">).<\/span><span class=\"typ\">FirstOrDefault<\/span><span class=\"pun\">();<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">if<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"pln\">idpp <\/span><span class=\"pun\">!=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">null<\/span><span class=\"pun\">)<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">{<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">ImagePart<\/span><span class=\"pln\"> ip <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"typ\">ImagePart<\/span><span class=\"pun\">)<\/span><span class=\"pln\">idpp<\/span><span class=\"pun\">.<\/span><span class=\"typ\">OpenXmlPart<\/span><span class=\"pun\">;<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"kwd\">using<\/span><span class=\"pln\"> <\/span><span class=\"pun\">(<\/span><span class=\"typ\">FileStream<\/span><span class=\"pln\"> fileStream <\/span><span class=\"pun\">=<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">File<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Open<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"After.jpg\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> <\/span><span class=\"typ\">FileMode<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Open<\/span><span class=\"pun\">))<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ip<\/span><span class=\"pun\">.<\/span><span class=\"typ\">FeedData<\/span><span class=\"pun\">(<\/span><span class=\"pln\">fileStream<\/span><span class=\"pun\">);<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"typ\">Console<\/span><span class=\"pun\">.<\/span><span class=\"typ\">WriteLine<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"done\"<\/span><span class=\"pun\">);<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br>&nbsp; &nbsp; &nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br>&nbsp; &nbsp; <\/span><span class=\"pun\">}<\/span><span class=\"pln\"><br><\/span><span class=\"pun\">}<\/span><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>You may have a picture content control where you want to replace the picture with a different picture. This post shows the Open XML SDK V2 code that is necessary to find a picture content control with an alias of \u201cMyPicture\u201d. It then finds the ImagePart, and then replaces the contents of the image part [&hellip;]<\/p>\n","protected":false},"author":10567,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_s2mail":"","footnotes":""},"class_list":["post-3055","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/3055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/users\/10567"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/comments?post=3055"}],"version-history":[{"count":1,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/3055\/revisions"}],"predecessor-version":[{"id":3056,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/3055\/revisions\/3056"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=3055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}