Изменение размеров фигур на слайде
Contents
[
Hide
]
Изменение размеров фигур на слайде
Одним из самых частых вопросов, задаваемых клиентами Aspose.Slides для Python через .NET, является то, как изменить размеры фигур так, чтобы при изменении размера слайда данные не обрезались. Этот короткий технический совет показывает, как это сделать.
Чтобы избежать дезориентации фигур, каждую фигуру на слайде необходимо обновить в соответствии с новым размером слайда.
import aspose.slides as slides
#Загрузить презентацию
with slides.Presentation("pres.pptx") as presentation:
#Старый размер слайда
currentHeight = presentation.slide_size.size.height
currentWidth = presentation.slide_size.size.width
#Изменение размера слайда
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
#Новый размер слайда
newHeight = presentation.slide_size.size.height
newWidth = presentation.slide_size.size.width
ratioHeight = newHeight / currentHeight
ratioWidth = newWidth / currentWidth
for slide in presentation.slides:
for shape in slide.shapes:
#Изменение позиции
shape.height = shape.height * ratioHeight
shape.width = shape.width * ratioWidth
#Изменение размера фигуры, если необходимо
shape.y = shape.y * ratioHeight
shape.x = shape.x * ratioWidth
presentation.save("Resize-1.pptx", slides.export.SaveFormat.PPTX)
Если на слайде есть таблица, приведенный выше код не будет работать идеально. В этом случае каждую ячейку таблицы необходимо изменить.
Вам нужно использовать следующий код, если вы хотите изменить размеры слайдов с таблицами. Установка ширины или высоты таблицы является особым случаем фигур, когда необходимо изменить высоту отдельных строк и ширину столбцов, чтобы изменить высоту и ширину таблицы.
import aspose.slides as slides
with slides.Presentation("pres.pptx") as presentation:
#Старый размер слайда
currentHeight = presentation.slide_size.size.height
currentWidth = presentation.slide_size.size.width
#Изменение размера слайда
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
#Новый размер слайда
newHeight = presentation.slide_size.size.height
newWidth = presentation.slide_size.size.width
ratioHeight = newHeight / currentHeight
ratioWidth = newWidth / currentWidth
for master in presentation.masters:
for shape in master.shapes:
#Изменение позиции
shape.height = shape.height * ratioHeight
shape.width = shape.width * ratioWidth
#Изменение размера фигуры, если необходимо
shape.y = shape.y * ratioHeight
shape.x = shape.x * ratioWidth
for layoutslide in master.layout_slides:
for shape in layoutslide.shapes:
#Изменение позиции
shape.height = shape.height * ratioHeight
shape.width = shape.width * ratioWidth
#Изменение размера фигуры, если необходимо
shape.y = shape.y * ratioHeight
shape.x = shape.x * ratioWidth
for slide in presentation.slides:
for shape in slide.shapes:
#Изменение позиции
shape.height = shape.height * ratioHeight
shape.width = shape.width * ratioWidth
#Изменение размера фигуры, если необходимо
shape.y = shape.y * ratioHeight
shape.x = shape.x * ratioWidth
if type(shape) is slides.Table:
for row in shape.rows:
row.minimal_height = row.minimal_height * ratioHeight
for col in shape.columns:
col.width = col.width * ratioWidth
presentation.save("Resize-2.pptx", slides.export.SaveFormat.PPTX)