Макрос 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, который вы можете скопировать и вставить в код макроса. Значения необходимо будет сгенерировать заново, если задержки будут изменены.

Другие вопросы по тегам