PPTX样式继承

11
有人知道pptx文件中字符样式是如何继承的吗?我知道至少包括以下几个步骤:
  1. 本地运行属性(a:rPr
  2. 本地段落属性(a:pPr/a:defRPr
  3. 形状段落属性(a:lstStyle/a:lvlXpPr/a:defRPr
  4. 来自布局的段落属性?
  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代码。
编辑:为进一步解释,我想找到绝对的运行属性,而不是相对的运行属性。可以将其视为:您有几个用于投影仪的透明片。我想看到从所有页面创建的图像,而不仅仅是本地页面。

你想做什么?你想通过编程方式改变一些样式吗? - Krishna Chaithanya Muthyala
最本地的样式是可以的,但我需要知道父级定义了什么,这样我就不会重复了。 - BrainStorm.exe
我认为你应该关注主题部分以及如何在需要的地方引用它...你尝试过检查主题部分吗?如果你能给我们一个具体想要做什么的例子,那将有助于更好地理解问题并尝试不同的方法。 - Krishna Chaithanya Muthyala
是的,我已经尝试检查主题部分了,它在列表中排名第6。 - BrainStorm.exe
这很复杂。按照以下顺序进行:1、2、3、7、6、5。这不是继承,而是查找。这意味着一旦设置了,就会被设置。例如,如果字体大小不在1、2、3中,而在7中,则即使在6中设置了它,它也不会改变。但是这个主题还有更多内容。 - Todd Main
1个回答

0

我猜您在这里所说的继承是指一种样式基于另一种样式。看起来您可以使用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”的定义。 - BrainStorm.exe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接