(更新:自我解答,见下文)
使用VS2013 Premium,asp.net。 vb.net,网站,win7
使用OpenXML SDK和OpenXML生产力工具
我有一个类对象的字典,它按位置和文本内容描述图形形状(矩形,箭头,文本框)。我使用类对象在空白PowerPoint演示文稿中创建形状。形状以正确的文本显示在正确的位置。但是,我无法弄清楚如何更改一些样式,从文本框大纲样式“solid& dark”或“none”开始。
整体机制:
一切正常。
然而,一些形状是需要轮廓的图形矩形,而其他形状则是不需要的文本框。同样,我无法弄清楚如何修改文本框上的轮廓。
这是一个测试设置,说明了问题(尽管作为一个openxml newb,我可能会遗漏一些非常大的明显部分)。
起点:使用没有轮廓的文本框创建PPTX;复制它;在PPTX副本中添加一个大纲到文本框,看看PowerPoint,并看到下面的比较:
比较OpenXML Productivity Tool中的两个文档,查看XML中的差异,并反映相应的代码:
使用生产力工具中没有轮廓的文本框打开PPTX,并反映生成整个PPTX所需的完整代码。将该代码放在新网站项目的类中。创建一个将在页面加载时执行该代码的webform。
找到文本框添加到shapetree的位置,以及为形状创建shapeproperties的位置。添加应该将轮廓添加到文本框的差异代码,以便将轮廓添加到shapeproperties:
使用活动和非活动代码运行它(使用If语句)并查看生成的PPTX:
带有没有大纲的文本框的PPTX:
PPTX带文字框的轮廓(注意:根本没有形状)
然后打开并比较生产力工具中的新输出PPTX:
(左边是“无轮廓”,右边是“有轮廓”)
输出文档的比较XML看起来与在起始输入文档的比较中看起来相同,但是,应该具有带轮廓的形状的输出PPT没有显示任何内容。奇怪的是,XML显示形状在PPTX中,但它不会在PowerPoint客户端中显示。
任何有助于理解如何将轮廓添加到某些文本框,箭头和矩形而不是其他文本框的帮助将不胜感激。
答案 0 :(得分:0)
答案来自不同的角度。 ShapeProperties对象的另一个元素是PresetGeometry,它具有ShapeTypeValue
Dim presetGeometry1 As A.PresetGeometry = Nothing
presetGeometry1 = New A.PresetGeometry() With { _
.Preset = A.ShapeTypeValues.Rectangle}
shapeProperties1.Append(presetGeometry1)
在进行实验时,我发现文本框不需要任何预设几何体。
我重写了代码,不为文本框添加PresetGeometry,然后将适用的主题样式设置为“黑暗,实心”轮廓而不是“无轮廓”。矩形根据主题显示轮廓,文本框显示在应该的位置,没有轮廓。