【问题标题】:PPTX Style InheritancePPTX 风格继承
【发布时间】:2016-08-31 20:16:30
【问题描述】:

有谁知道 pptx 文件中的字符样式是如何继承的?我知道它至少是这样的:

  1. 本地运行道具 (a:rPr)
  2. 本地段落道具 (a:pPr/a:defRPr)
  3. 形状段落道具 (a:lstStyle/a:lvlXpPr/a:defRPr)
  4. Layout 中的段落道具?
  5. 主幻灯片段落道具 (p:txStyles/(p:titleStyle|p:bodyStyle|p:otherStyle)/a:lvlXpPr/a:defRPr)
  6. 幻灯片主题 (a:objectDefaults/(a:spDef|a:lnDef|a:txDef)/a:lstStyle/a:lvlXpPr/a:defRPr)
  7. 演示默认值 (p:defaultTextStyle/a:lvlXpPr/a:defRPr)

但是,当我将它与其他应用程序的结果进行比较时,它并不匹配。由于技术原因,我不能使用已经为我执行此操作的库,我自己正在阅读 xml。 apache POI 源在相关区域中有一些 TODO: 标记,我无法理解 LibreOffice 代码。

编辑:为了进一步解释,我想找到绝对运行属性,而不是相对运行属性。 On 可以这样想:您有几张用于投影仪的透明胶片。我想查看从所有页面创建的图像,而不仅仅是本地页面。

【问题讨论】:

  • 你想做什么?您想以编程方式更改某些样式吗?
  • 最本土的风格是的,但我需要知道父母的定义,所以我不会多余。
  • 我认为您应该查看主题部分以及如何在需要的地方引用它...您是否尝试检查主题部分?如果您可以举个例子说明您到底想做什么,这将有助于更好地理解问题并尝试不同的事情。
  • 是的,我试过检查主题部分,它是列表中的第 6 位。
  • 这很复杂。按以下顺序进行:1、2、3、7、6、5。与其说是继承,不如说是查找。这意味着当它设置时,它就设置好了。例如,如果字体大小不在 1 2、3 中,而在 7 中,则 6 不会改变它,即使它设置在那里。但这个主题还有更多内容。

标签: c# xml text powerpoint


【解决方案1】:

我想通过在这种情况下编写继承,您的意思是一种样式基于另一种样式。看来您可以使用BasedOn 属性以编程方式验证这一点。

我找到了一篇关于此的文章,其中包含一个示例代码自动检测所选文档中的样式层次结构。你可以在这里找到它: https://blogs.msdn.microsoft.com/ericwhite/2010/03/29/testing-for-base-styles-in-open-xml-wordprocessingml-documents/。 它为 Word (DOCX) 文件编写的代码,但我想它应该与 PowerPoint (PPTX) 非常相似。 如果您在使用 PPTX 文件的代码时遇到任何问题,请告诉我,我会尽力提供帮助。

根据https://msdn.microsoft.com/en-us/library/office/gg188064.aspx#sectionSection5这个信息,“字符样式”只能被run元素类型引用,不能被段落引用。

您还可以在此处找到有关样式继承的文章: https://blogs.msdn.microsoft.com/ericwhite/2009/10/28/open-xml-wordprocessingml-style-inheritance-post-4/

虽然它没有直接回答您的问题,但它包含一些与样式继承相关的附加信息,因此可能对您有用。

【讨论】:

  • 谢谢,但是 pptx 文件没有样式表并且 pptx 运行属性没有BasedOn的定义
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 2013-07-11
  • 2020-01-17
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多