Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在OpenXML中创建图片内容控件_C#_Ms Word_Openxml_Openxml Sdk - Fatal编程技术网

C# 在OpenXML中创建图片内容控件

C# 在OpenXML中创建图片内容控件,c#,ms-word,openxml,openxml-sdk,C#,Ms Word,Openxml,Openxml Sdk,我正在尝试使用OpenXMLSDK创建内容控件,以便其他程序可以根据需要提取文档并对其进行编辑 我成功地创建了文本内容控件,但事实证明图片内容控件更具挑战性 我得到的最接近的代码如下: var sdtCBlock = new SdtContentBlock(new Paragraph(new Run())); var sdtPr = new SdtProperties( new SdtAlias {Val = "" }, new

我正在尝试使用OpenXMLSDK创建内容控件,以便其他程序可以根据需要提取文档并对其进行编辑

我成功地创建了文本内容控件,但事实证明图片内容控件更具挑战性

我得到的最接近的代码如下:

var sdtCBlock = new SdtContentBlock(new Paragraph(new Run()));

var sdtPr = new SdtProperties(
                new SdtAlias {Val = "" },
                new Tag {Val = ""},
                new SdtContentPicture(),
                new DataBinding {XPath = ""}
            );

wordDoc.MainDocumentPart.Document.Body.AppendChild(new SdtCell(sdtPr, sdtCBlock));
这将创建word识别为图片的空内容控件:

空图片内容控制

问题是,第二个程序不会按原样将图片插入此内容控件。但是,如果我们手动打开word文件并单击内容控件以弹出蓝色方形模板,则第二个程序将成功检测并更改内容控件中的图像

手动单击后使用蓝色方形模板进行内容控制


我做错什么了吗?我如何使用OpenXml代码生成带有模板的占位符,以便第二个程序提取?

尝试使用OpenXMLSDK生产力工具进行比较。首先,在不使用图片内容控件的情况下获取结果文档(注释掉代码的这一部分)。对于第二个,打开第一个文档的副本并手动插入图片内容控件。您应该获得该工具生成的代码,以便将第一个文档更改为第二个文档。@Cindymister-我尝试过,但有很多更改,有些更改我无法正确映射到Open XML命令。最大的更改是通过图形对象[link]()创建模板