Управление руководящими линиями в презентациях на Python
Обзор
Руководящие линии — это регулируемые горизонтальные и вертикальные линии, которые помогают пользователям постоянно выравнивать фигуры при редактировании презентации в PowerPoint. Они особенно полезны, когда приложение генерирует презентацию, которая позже будет дорабатываться вручную: приложение может сохранить те же вспомогательные линии выравнивания, которым авторы должны следовать при добавлении или перемещении содержимого.
Руководящие линии являются вспомогательными инструментами редактирования, а не содержимым слайда. Они не отображаются в показе слайдов или в визуализированном выводе. Aspose.Slides для Python через .NET предоставляет их через интерфейс IDrawingGuidesCollection. Руководящая линия представлена объектом IDrawingGuide и имеет ориентацию, позицию и цвет.
Позиция измеряется в пунктах от верхнего левого угла соответствующего слайда или мастера. Вертикальная линия использует горизонтальную координату, обычно в диапазоне от нуля до ширины слайда. Горизонтальная линия использует вертикальную координату, обычно в диапазоне от нуля до высоты слайда.
Добавление руководящих линий в представление слайда
Используйте ICommonSlideViewProperties.drawing_guides для управления линиями, отображаемыми во время редактирования обычных слайдов. Вызовите IDrawingGuidesCollection.add с параметром Orientation и позицией в пунктах.
В следующем примере добавляется одна вертикальная линия справа от центра слайда и одна горизонтальная линия ниже него:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide_size = presentation.slide_size.size
guides = presentation.view_properties.slide_view_properties.drawing_guides
guides.add(slides.Orientation.VERTICAL, slide_size.width / 2 + 12.5)
guides.add(slides.Orientation.HORIZONTAL, slide_size.height / 2 + 12.5)
presentation.save("drawing-guides.pptx", slides.export.SaveFormat.PPTX)
Доступ к руководящим линиям
Свойство IDrawingGuidesCollection.count и индексатор предоставляют доступ к существующим линиям. Свойства IDrawingGuide.orientation, IDrawingGuide.position и IDrawingGuide.color можно читать и изменять.
В следующем примере читаются линии представления слайда из ранее созданной презентации:
import aspose.slides as slides
with slides.Presentation("drawing-guides.pptx") as presentation:
guides = presentation.view_properties.slide_view_properties.drawing_guides
for index in range(guides.count):
guide = guides[index]
print(f"Guide {index}: orientation = {guide.orientation}, position = {guide.position}, color = {guide.color}")
Добавление руководящих линий в мастер‑слайды и шаблоны
Мастер‑слайд и каждый из его шаблонов могут иметь собственные коллекции руководящих линий. Используйте IMasterSlide.drawing_guides для мастера и ILayoutSlide.drawing_guides для шаблона слайда.
В следующем примере добавляется вертикальная линия к первому мастер‑слайду и горизонтальная линия к первому шаблону слайда:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide_size = presentation.slide_size.size
master_guides = presentation.masters[0].drawing_guides
layout_guides = presentation.layout_slides[0].drawing_guides
master_guides.add(slides.Orientation.VERTICAL, slide_size.width / 2 - 20)
layout_guides.add(slides.Orientation.HORIZONTAL, slide_size.height / 2 + 20)
presentation.save("master-layout-drawing-guides.pptx", slides.export.SaveFormat.PPTX)
Добавление руководящих линий в заметки и раздаточные мастера
Мастера заметок и раздаточных листов также поддерживают руководящие линии. Используйте IMasterNotesSlide.drawing_guides и IMasterHandoutSlide.drawing_guides для доступа к их коллекциям. Если в презентации нет одного из этих мастеров, IMasterNotesSlideManager.set_default_master_notes_slide или IMasterHandoutSlideManager.set_default_master_handout_slide создают мастер по умолчанию и возвращают его.
В следующем примере добавляется горизонтальная линия к мастеру заметок и вертикальная линия к раздаточному мастеру:
import aspose.slides as slides
with slides.Presentation() as presentation:
notes_size = presentation.notes_size.size
notes_master = presentation.master_notes_slide_manager.set_default_master_notes_slide()
handout_master = presentation.master_handout_slide_manager.set_default_master_handout_slide()
notes_master.drawing_guides.add(slides.Orientation.HORIZONTAL, notes_size.height / 2 + 50)
handout_master.drawing_guides.add(slides.Orientation.VERTICAL, notes_size.width / 2 - 50)
presentation.save("notes-handout-drawing-guides.pptx", slides.export.SaveFormat.PPTX)
Очистка руководящих линий
Вызовите IDrawingGuidesCollection.clear для удаления каждой линии из конкретной коллекции. Очистка одной коллекции не влияет на линии, хранящиеся в другой области.
В следующем примере очищаются линии представления слайда и все линии на мастерах слайдов, шаблонах, мастере заметок и раздаточном мастере без создания отсутствующих мастеров:
import aspose.slides as slides
with slides.Presentation("presentation-with-guides.pptx") as presentation:
presentation.view_properties.slide_view_properties.drawing_guides.clear()
for master_slide in presentation.masters:
master_slide.drawing_guides.clear()
for layout_slide in presentation.layout_slides:
layout_slide.drawing_guides.clear()
notes_master = presentation.master_notes_slide_manager.master_notes_slide
if notes_master is not None:
notes_master.drawing_guides.clear()
handout_master = presentation.master_handout_slide_manager.master_handout_slide
if handout_master is not None:
handout_master.drawing_guides.clear()
presentation.save("presentation-without-guides.pptx", slides.export.SaveFormat.PPTX)
FAQ
Отображаются ли руководящие линии в показе слайдов или экспортированных изображениях?
Нет. Руководящие линии служат вспомогательным средством выравнивания при редактировании и не рендерятся как содержимое презентации.
Можно ли добавить руководящую линию непосредственно к отдельному обычному слайду?
Руководящие линии для обычных слайдов хранятся в свойствах представления слайда презентации. Отдельные коллекции линий доступны для мастеров слайдов, шаблонов, мастеров заметок и раздаточных листов.
Какие единицы измерения используются для позиций линий?
Позиции указываются в пунктах, где 72 пункта соответствуют одному дюйму. Вертикальные позиции измеряются от левого края, горизонтальные — от верхнего края.
Удаляет ли очистка руководящих линий формы или изменяет содержимое слайда?
Нет. Метод clear удаляет только линии в выбранной коллекции. Формы и другое содержимое слайда остаются без изменений.