PythopTi可以使用默认字体pythopti获取占位符大小吗?

2024-04-29 06:44:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python-pptx package创建Powerpoint演示文稿。在

我知道我能写一段或一段。我的问题是我想将字体大小设置为默认大小。换句话说:我需要知道占位符的默认字体大小。不幸的是font.sizereturns None,如果没有显式声明字体大小。在

以下是我期望能够做到的:

from pptx import Presentation

# setup presentation
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)

# make a title
title = slide.placeholders[0]
title.text = "Hello, World!"

# here I'd like to resize the font size to 70% of default
p = title.text_frame.paragraphs[0]
default_size = p.font.size # <= Desired behaviour. Returns None in reality
font.size = default_size * 0.7

Tags: totextnonedefaultpackagesizetitlepresentation
1条回答
网友
1楼 · 发布于 2024-04-29 06:44:05

答案有点复杂,我没有给你一个食谱,但也许这会给你指明正确的方向。在

一般来说,形状的字体大小属性参与样式层次结构,类似于级联样式表(CSS)的工作方式。可以在不同级别设置值,最接近的显式设置获胜。这就是为什么形状级别设置是可靠的,因为它是“最近”的可能设置。在

对于占位符,如示例中的标题占位符,级联如下:

  1. 占位符形状本身(slide.placeholders[0]或更简单地slide.title
  2. 此占位符派生自幻灯片布局占位符
  3. 布局占位符派生自的幻灯片母版占位符
  4. 在幻灯片母版标题占位符中未指定时,可能是某些全局默认值

因此,要导出有效字体大小值,您需要遍历这个“继承链”,直到找到一个显式定义的值,即有效值。类似以下伪代码:

def effective_title_placeholder_font_size():
    if title_placeholder.font-size is not None:
        return title_placeholder.font-size
    if slide-layout-title-placeholder.font-size is not None:
        return slide-layout-title-placeholder.font-size
    etc.

字体大小可以在整个形状上设置,也可以在单个段落或段落上覆盖字体大小,这一过程更加复杂。这就是选择整体形状和设置字体大小与选择文本范围和设置字体大小之间的区别。在

所以你看到了一些复杂的东西。这绝对是可行的,但是你需要非常糟糕的,这取决于你的Python和一般的软件开发技能水平。在

充其量,python-pptx中的这些不同操作只提供部分API支持(比如获取此幻灯片占位符的幻灯片布局对应项,等等),因此您可能需要深入研究XML。在

相关问题 更多 >