我正在用python-pptx package创建Powerpoint演示文稿。在
我知道我能写一段或一段。我的问题是我想将字体大小设置为默认大小。换句话说:我需要知道占位符的默认字体大小。不幸的是font.size
returns 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
答案有点复杂,我没有给你一个食谱,但也许这会给你指明正确的方向。在
一般来说,形状的字体大小属性参与样式层次结构,类似于级联样式表(CSS)的工作方式。可以在不同级别设置值,最接近的显式设置获胜。这就是为什么形状级别设置是可靠的,因为它是“最近”的可能设置。在
对于占位符,如示例中的标题占位符,级联如下:
slide.placeholders[0]
或更简单地slide.title
)因此,要导出有效字体大小值,您需要遍历这个“继承链”,直到找到一个显式定义的值,即有效值。类似以下伪代码:
字体大小可以在整个形状上设置,也可以在单个段落或段落上覆盖字体大小,这一过程更加复杂。这就是选择整体形状和设置字体大小与选择文本范围和设置字体大小之间的区别。在
所以你看到了一些复杂的东西。这绝对是可行的,但是你需要非常糟糕的,这取决于你的Python和一般的软件开发技能水平。在
充其量,
python-pptx
中的这些不同操作只提供部分API支持(比如获取此幻灯片占位符的幻灯片布局对应项,等等),因此您可能需要深入研究XML。在相关问题 更多 >
编程相关推荐