python-pptx: 有什么方法可以让文字垂直吗?

python-pptx: Any way to make text vertical?

有什么方法可以控制 python-pptx 中的文本方向吗?

我想要做的是使文本的形状为垂直,如下图所示。

我已在文档中搜索提示,但一无所获。

一个简单的解决方案似乎是制作一个水平文本框并将其旋转 90 度:

my_shape.rotation = 90

这使整个形状垂直,但我想做的是改变形状内文本的方向(即制作一个垂直文本框)。

对于半角字符,其行为看起来与垂直文本框一样。然而,对于像日文这样的全角字符,上面的解决方案改变了每个字符的方向,这是我不期望的(显示在图像的右侧)。

我想要的在图片的左边。 注意日语句子的方向是垂直的,但是里面的字符的方向还是保持的。

这可以通过 PowerPoint 轻松实现。您可以插入一个垂直文本框,如下图所示。 (确保在 PowerPoint 中区分水平文本框和垂直文本框 UI。)

我想通过 python-pptx 做同样的事情。

python-pptx 包没有为此公开准备好的属性。最后,它会生成一个 XML,如果您知道需要触摸的内容,可以直接编辑 XML 来实现最终结果。您还可以解压缩 excel 文件,检查输出 xml 以了解需要更改的内容。

许多格式样式,如文本锚定、自动调整和文本对齐,都是在 <a:bodypr> 标签上完成的。它在 CT_TextBodyProperties. The text direction is controlled by vert attribute and that also have some valid values which are defined in ST_TextVerticalType.

中定义

假设您有要添加文本的文本框:

text_frame.text = '<your text>'

您可以按照层次结构获取元素并更新属性。文本框将具有 txBody,进而具有 bodyPr。但是它还有一个属性可以直接访问bodyPr.

text_frame._bodyPr.attrib.update({'vert': 'vert'})

这里我们添加 vert 属性,其值为 vert,它只会旋转文本而不是实际形状。您还可以试验 ST_TextVerticalType.

中定义的其他值