Форма номера / индексы каждого слайда PPTX в существующей презентации - PullRequest
0 голосов
/ 23 октября 2019

Я новичок в библиотеке Python pptx, и мой вопрос: как я могу определить список фигур, номера / индексы фигур (shapetree) и типы фигур каждого слайда pptx в существующей презентации, используя библиотеку Python pptx? Я хотел бы обновить существующую презентацию PPT, и похоже, что первым шагом было бы найти точные идентификаторы формы на каждом слайде, чтобы получить к ним доступ с обновлениями. Не могли бы вы указать мне на существующее решение или, возможно, примеры?

1 Ответ

1 голос
/ 23 октября 2019

Я предполагаю, что под «определить» вы подразумеваете что-то вроде «обнаружить», так как обычно нет веских причин для изменения существующих значений.

Хороший способ начать - это просмотреть и распечатать некоторые атрибуты:

prs = Presentation("my-deck.pptx")
for slide in prs.slides:
    for shape in prs.shapes:
        print("id: %s, type: %s" % (shape.shape_id, shape.shape_type))

Вы можете получить как можно более сложную информацию, используя любые атрибуты слайда и / или формы, перечисленные в документации API здесь:
https://python -pptx.readthedocs.io / en / latest / api / shape.html # shape-objects-in-general

Для поиска фигуры по идентификатору (или имени) необходим код, подобный следующему:

def find_shape_by_id(shapes, shape_id):
    """Return shape by shape_id."""
    for shape in shapes:
        if shape.shape_id == shape_id:
            return shape
    return None

или, если вы делаете много, вы можете использовать dict для этой работы:

shapes_by_id = dict((s.shape_id, s) for s in shapes)

, который затем дает вам все удобные методы, такие как:

>>> 7 in shapes_by_id
True
>>> shapes_by_id[7]
<pptx.shapes.Shape object at 0x...>
...