Powerpoint:更改默认占位符内部边距

Powerpoint:更改默认占位符内部边距

我正在主视图中创建布局。

插入的所有占位符均有 0.25 厘米(左右)和 0.13 厘米(上下)的内部边距。文本从占位符左边框开始 0.25 厘米。

有没有办法将此默认边距设置为 0?

编辑:另存为默认文本框方法在这里不起作用,因为此选项不适用于占位符。

插入占位符

powerpoint 默认占位符边距

答案1

右键单击文本框并选择“设置形状格式”在打开的“设置形状格式”窗格中,单击“文本选项”单击“文本框”图标(出现的三个图标中最右边的图标)根据需要设置左/右上/下边距。

如果您希望对所有新文本框进行相同的处理,则右键单击文本并选择“设为默认文本”。

答案2

您可以使用下面的 Python 脚本在所有占位符中设置所需的边距。即使您将占位符复制到普通视图中的幻灯片中,以这种方式设置的边距也会保留(执行此操作时将恢复默认边距)。在命令行上调用此文件而不指定任何参数会将边距设置为零。如果您想要不同的边距值,则必须在命令中提供它们。

#!/usr/bin/env python3

import argparse, os, shutil
import xml.etree.cElementTree as ET
from re import match
from pathlib import Path

parser = argparse.ArgumentParser(
    allow_abbrev=False, 
    description="File name has to be 'todo.pptx' located in the Desktop"
    )

parser.add_argument("-l", "--left", required=False, nargs="?", default=0, type=float, help="left margin")
parser.add_argument("-r", "--right", required=False, nargs="?", default=0, type=float, help="right margin")
parser.add_argument("-t", "--top", required=False, nargs="?", default=0, type=float, help="top margin")
parser.add_argument("-b", "--bottom", required=False, nargs="?", default=0, type=float, help="bottom margin")
args = vars(parser.parse_args())

main_path = Path.home() / Path('Desktop')
end_path = main_path / Path('margins')
todo_pptx = main_path / Path('todo.pptx')
todo_zip = main_path / Path('todo.zip')
xml_path = end_path / Path('ppt', 'slideLayouts')
xml_file = end_path / Path('ppt', 'slideLayouts', 'slideLayout2.xml')
custom = main_path / Path('custommargins')
custom_zip = main_path / Path('custommargins.zip')
custom_pptx = main_path / Path('custommargins.pptx')
tag1 = '{http://schemas.openxmlformats.org/presentationml/2006/main}cSld'
tag2 = '{http://schemas.openxmlformats.org/presentationml/2006/main}spTree'
tag3 = '{http://schemas.openxmlformats.org/presentationml/2006/main}sp'
tag4 = '{http://schemas.openxmlformats.org/presentationml/2006/main}txBody'
tag5 = '{http://schemas.openxmlformats.org/drawingml/2006/main}bodyPr'

os.rename(todo_pptx, todo_zip)
shutil.unpack_archive(todo_zip, end_path, 'zip')

def register_all_namespaces(filename):
    namespaces = dict([node for _, node in ET.iterparse(filename, events=['start-ns'])])
    for ns in namespaces:
        ET.register_namespace(ns, namespaces[ns])
register_all_namespaces(xml_file)

for file in os.listdir(xml_path):
    if not file.endswith('.xml'): continue
    fullname = xml_path / Path(file)
    tree = ET.parse(fullname)
    root = tree.getroot()
    
    all_bodyPr = root.findall(f'{tag1}/{tag2}/{tag3}/{tag4}/{tag5}')
    
    for elem in all_bodyPr:
        elem.set('lIns', str(args["left"]))
        elem.set('tIns', str(args["top"]))
        elem.set('rIns', str(args["right"]))
        elem.set('bIns', str(args["bottom"]))
    
    tree.write(fullname,
            xml_declaration=True,
            encoding='utf-8',
            method='xml')

shutil.make_archive(custom, 'zip', end_path)
os.rename(custom_zip, custom_pptx)

print('work done!')

相关内容