Макрос LibreOffice Impress для чтения продолжительности события анимации слайда и времени задержки.
Я пишу базовый макрос в LibreOffice Impress, который создает собственное слайд-шоу, которое будет работать в течение определенного периода времени. Слайд-шоу состоит из набора автоматически перемещающихся слайдов. Моя проблема в том, что если слайд включает в себя анимацию, например, появление фигуры, я не могу найти ее продолжительность и время задержки. Без этого времени я не могу рассчитать, как долго слайд будет отображаться.
Используя метод PropertySetInfo и getPropertyByName(), я нашел свойство Effect , но нет никаких признаков свойств Duration или Delay . Может ли кто-нибудь указать мне, где они могут храниться в модели?
1 ответ
Подобные вопросы задавались здесь и здесь , но решения не было.
Инструмент МРТ показывает свойствоTextAnimationDelay
для фигуры, которая задокументирована как «Это задержка в тысячных долях секунды между каждым шагом анимации». Однако значение было 0. Я тоже попробовал это, надеясь получить список анимаций на конкретном слайде, как показано в верхней части боковой панели, но в нем не было ожидаемого количества элементов:
oAnimationsEnum = oSlide.getAnimationNode().createEnumeration()
Вместо использования API вы можете разархивировать файл .odp и поискать, где хранятся значения, аналогично тому, что предлагается здесь :
Найдите подходящее
anim:par
элемент. Наборsmil:begin="1s"
на соответствующих элементах.
Как только вы поймете, как это сделать вручную, напишите скрипт, который сделает это автоматически — разархивируйте файл, затем выполните синтаксический анализ. Основная идея требует всего лишь нескольких строк кода Python, хотя для этой конкретной задачи может потребоваться больше кода из-за того, как хранятся рассматриваемые значения.
Поскольку в конечном итоге вам нужна эта информация в макросе Basic, ваш сценарий может распечатать массив значений языка Basic, который вы можете скопировать и вставить в код макроса. Значения необходимо будет сгенерировать заново, если задержки будут изменены.