首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dotnet OpenXML 元素 cNvPr NonVisual Drawing Properties 的属性作用

dotnet OpenXML 元素 cNvPr NonVisual Drawing Properties 的属性作用

作者头像
林德熙
发布2020-09-29 10:05:43
9090
发布2020-09-29 10:05:43
举报
文章被收录于专栏:林德熙的博客林德熙的博客

本文收集元素属性 cNvPr Non-Visual Drawing Properties 的属性的作用

本文的 Non-Visual Drawing Properties 也就是在 OpenXML 文档里面的 cNvPr 代码,在 ECMA 376 的 20.2.2.3 文档有详细说明

在形状的 Non-Visual Drawing Properties 使用 p:cNvPr 表示,在图片使用 pic:cNvPr 表示等

本文的 OpneXMl SDK 的获取代码前提都有以下代码

public void Foo(NonVisualDrawingProperties nonVisualDrawingProperties)
{
    
}

id

虽然全名是 Unique Identifier 表示层级里面唯一的 id 标识,但是实际可以存在重复。根据 ECMA 376 的说法是在当前文档里面唯一的 id 标识。但实际上范围只是当前层级。例如在 Slide 页面里面的多个元素,可以通过这个 id 作为区分,而在一个组合元素里面,允许组合里面的元素的 id 和 Slide 页面的其他元素 id 是重复的

而且这个 id 标识是允许重复的,在实际的 Office 里面将会使用比较复杂的规则来解决 id 是重复。如果一份文档里面存在重复的 id 标识,可以认为这份文档是不规范的

这个 id 可以让元素被其他部分所引用,最简单的如动画,如下面代码,一份文档有两个矩形,而动画依靠这个 id 判断使用哪个矩形

  <p:cSld>
    <p:spTree>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="2" name="矩形 3" />
          <p:cNvSpPr />
          <p:nvPr />
        </p:nvSpPr>
        <!-- 忽略代码 -->
      </p:sp>
      <p:sp>
        <p:nvSpPr>
          <p:cNvPr id="3" name="矩形 3" />
          <p:cNvSpPr />
          <p:nvPr />
        </p:nvSpPr>
        <!-- 忽略代码 -->
      </p:sp>
    </p:spTree>
  </p:cSld>
  <p:timing>
    <p:tnLst>
      <p:par>
        <!-- 忽略代码 -->
                                        <p:tgtEl>
                                          <p:spTgt spid="3" />
                                        </p:tgtEl>
        <!-- 忽略代码 -->
      </p:par>
    </p:tnLst>
  </p:timing>

上面代码的动画使用 p:spTgt spid="3"spid="3" 引用 id 是 3 的元素,使用 PPT 打开如下,可以看到第二个元素设置动画

在 OpenXML SDK 的读取方法如下

    var id = nonVisualDrawingProperties.Id;

测试课件请点击 元素id形状.pptx 下载

name

用于表示元素的名字,这个名字使用本地语言,可以用来在应用程序给用户了解当前元素的名字

        <p:nvSpPr>
          <p:cNvPr id="2" name="林德熙是逗比"/>
          <p:cNvSpPr />
          <p:nvPr />
        </p:nvSpPr>

如上面代码,可以设置元素名,这个元素名可以在 PPT 的选择窗格看到。更改元素名也可以在 PPT 的选择窗格更改

另一个在 PPT 可见的是在动画的窗格

在 OpenXML SDK 的读取方法如下

    var name = nonVisualDrawingProperties.Name;

测试课件请点击 元素名.pptx 下载

title

表示当前元素的标题,标题和下面的 descr 描述的作用是在元素不能显示的时候,可以用来替换的文本。也用来给辅助模块使用,如屏幕阅读器

官方的说法是 标题和说明提供表格、图示和其他对象中包含的信息的可选、基于文本的表示法

在 OpenXML SDK 的读取方法如下

    var title = nonVisualDrawingProperties.Title;

descr

全名是 Alternative Text for Object 用于指定当前元素的代替文本,用于提供给辅助的模块,包括屏幕阅读器使用。也可以用在不支持当前元素的时候显示的文本

在 OpenXML SDK 的读取方法如下

    var description = nonVisualDrawingProperties.Description;

在 PPT 可以在形状设置看到内容,如下面代码

        <p:nvSpPr>
          <p:cNvPr id="2" name="林德熙是逗比" title="标题" descr="描述"/>
          <p:cNvSpPr />
          <p:nvPr />
        </p:nvSpPr>

测试课件请点击 元素标题.pptx 下载

hidden

可以设置元素是否可见

        <p:nvSpPr>
          <p:cNvPr id="2" name="林德熙是逗比" hidden="true"/>
          <p:cNvSpPr />
          <p:nvPr />
        </p:nvSpPr>

这个功能可以对应在 PPT 的选择窗格里面的元素是否可见,如上面这份文档,可以在选择窗格里面看到元素是不可见的

如果去掉上面这个 hidden="true" 属性,那么可以看到选择窗格里面的可见图标修改

打开选择窗格的方法是在 PPT 的选择下拉,点击选择窗格

在 OpenXML SDK 的读取方法如下

    var hidden = nonVisualDrawingProperties.Hidden;

测试课件请点击 元素不可见.pptx 下载

更多请看 Office 使用 OpenXML SDK 解析文档博客目录

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • id
  • name
  • title
  • descr
  • hidden
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档