2016-11-01 3 views
1

Я ищу способ добавить гиперссылку на другие слайды в том же документе PPTX, автоматизированном с использованием python-pptx. Ниже был мой тест, который не сработал. Поиск в Интернете намекал на несколько решений, используя ActionSetting, part, target_slide, rels, rPr.add_ihlinkClick и т. Д., Но я не мог полностью понять, чтобы объединить их.Создание гиперссылки на другие слайды в том же документе PowerPoint

В принципе, желаемый результат заключается в создании текста, который будет прыгать на любой другой слайд по количеству слайдов или слайд-ID (если такая вещь существует)

p = table.rows[1].cells[1].text_frame.paragraphs[0] 
    r = p.add_run() 
    r.text = "Testing" 
    r.hyperlink.address = "/ppt/slides/rels/slide1.xml" 
+0

Можете ли вы подробно остановиться на «не работает»? –

+0

Объектная модель Via PowerPoint (и это может быть не так на python), вы присваиваете свойство гиперссылки '.SubAddress' как строку с разделителями-запятыми на основе' slide.SlideID', 'slide.SlideNumber',' slide.Name' , 'slide.SlideIndex'. –

+0

Спасибо. Я могу рассмотреть возможность использования автоматизации COM для дополнения python-pptx для этого. Предоставленный ответ предлагается для манипуляции с XML напрямую, что мне еще не удобно с – idazuwaika

ответ

1

Похоже, что ActionSetting биты в python-pptx считываются - только на данный момент. Таким образом, нет прямой поддержки API для того, что вы ищете. Вам нужно будет написать функцию расширения/обходного пути, если вы хотите написать их.

Там довольно твердый анализ заходящего действия признакового пространства здесь: http://python-pptx.readthedocs.io/en/latest/dev/analysis/shp-hyperlink.html

Если я правильно помню, единственный реальный трюк становится внутренним целевым «URL» для целевого слайда. Я бы сделал внутреннюю связь вручную с помощью PowerPoint UI и рассмотрел XML, который он производит, с помощью opc-diag. Было бы довольно просто добраться до того, что сработало бы, даже если оно не решило общий случай.

+0

Создано с использованием пользовательского интерфейса и наблюдается это при просмотре XML-файла в папке слайдов. Кажется, что не используется внутренняя ссылка? idazuwaika

+0

@idazuwaika Это элемент гиперссылки (click action). Он связывается с элементом * relationship * через атрибут r: id = "rId2". Поэтому вам нужно посмотреть в части rels для слайда и найти связь, имеющую соответствующий r: id. Имя части файла rels совпадает с именем слайда с добавлением '.rels', так же как 'slide1.xml.rels'. Именно здесь найден фактический URL-адрес в атрибуте «Target». – scanny

+0

Спасибо. Похоже, мне придется потратить некоторое время, чтобы перейти через формат PPTX более подробно. Довольно много решений, которые мне нужны, зависят от этой прямой манипуляции с XML. – idazuwaika

 Смежные вопросы

  • Нет связанных вопросов^_^