【问题标题】:PowerPoint openxml - add outline to textboxPowerPoint openxml - 向文本框添加大纲
【发布时间】:2015-02-07 03:00:32
【问题描述】:

(更新:自我回答,如下)

使用 VS2013 高级版,asp.net。 vb.net, 网站, win7
使用 OpenXML SDK 和 OpenXML 生产力工具

我有一个类对象字典,它按位置和文本内容描述图形形状(矩形、箭头、文本框)。我使用类对象在空白的 PowerPoint 演示文稿中创建形状。形状以正确的文本显示在正确的位置。但是,我不知道如何更改某些样式,从文本框轮廓样式“solid & dark”或“none”开始。

整体机制:

  • 从 PowerPoint 2013 文档开始,其中一张幻灯片具有一种形状
  • 使用生产力工具将 PPTX 反映为 C#,将其转换为 VB.Net,将其放入我的项目中的一个类中(再次,网站)
  • 在代码中找到了将形状添加到幻灯片形状树的位置
  • 将该代码替换为对导入字典的类的函数调用,将字典的类对象转换为 openxml 形状,并将形状添加到形状树中。

一切正常。

但是,有些形状是需要轮廓的图形矩形,而另一些是不需要轮廓的文本框。同样,我不知道如何修改文本框上的轮廓。

这是一个说明问题的测试设置(虽然作为一个 openxml 新手,我可能会遗漏一些非常明显的部分)。

起点:创建一个没有大纲的带有文本框的PPTX;复制它;在 PPTX 副本中向文本框添加大纲,在 PowerPoint 中查看,并查看下面的比较:
在 OpenXML Productivity Tool 中比较两个文档,查看 XML 中的差异,并反映对应的代码:

在生产力工具中打开带有没有大纲的文本框的 PPTX,并反映生成整个 PPTX 所需的完整代码。将该代码放在一个新网站项目的类中。创建一个将在页面加载时执行该代码的网络表单。

找到将文本框添加到 shapetree 的位置,以及为形状创建 shapeproperties 的位置。添加应该添加轮廓到文本框的差异代码,以便将轮廓添加到shapeproperties:

在代码活动和非活动状态下运行它(使用 If 语句)并查看生成的 PPTX:

PPTX 带文本框,不带大纲:

带有轮廓的文本框的PPTX(注意:根本没有形状)

然后在生产力工具中打开并比较新输出的 PPTX:
(左边是“无轮廓”,右边是“有轮廓”)

输出文档的比较 XML 看起来与开始输入文档的比较相同,但是,应该具有轮廓形状的输出 PPT 什么都没有显示。奇怪的是,XML 显示形状在那个 PPTX 中,但它没有显示在 PowerPoint 客户端中。

任何有助于理解如何将轮廓添加到某些文本框、箭头和矩形而不是其他文本框的帮助。

【问题讨论】:

    标签: asp.net vb.net visual-studio openxml


    【解决方案1】:

    答案来自不同的角度。 ShapeProperties 对象的另一个元素是 PresetGeometry ,它有一个 ShapeTypeValue

    Dim presetGeometry1 As A.PresetGeometry = Nothing
    presetGeometry1 = New A.PresetGeometry() With { _
                            .Preset = A.ShapeTypeValues.Rectangle} 
    shapeProperties1.Append(presetGeometry1)
    

    在试验过程中,我发现文本框不需要任何预设几何图形。

    我重写了代码以不为文本框添加 PresetGeometry,然后将适用的主题样式设置为具有“深色、实心”轮廓而不是“无轮廓”。矩形根据主题显示带有轮廓,文本框出现在应有的位置,没有轮廓。

    【讨论】:

    • 用2行声明一个变量的目的是什么。 Dim presetGeometry1 As New A.PresetGeometry With ... 效果很好。
    • 我同意。那是我试图隔离问题时的产物,“新”在 if 块中。
    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多