Управление гиперссылками в презентациях с Python

Обзор

Гиперссылка — это ссылка на внешний ресурс, объект или элемент данных, либо конкретное место внутри файла. Распространённые типы гиперссылок в презентациях PowerPoint включают:

  • Ссылки на веб‑сайты, встроенные в текст, фигуры или медиа
  • Ссылки на слайды

Aspose.Slides for Python via .NET предоставляет широкий набор операций, связанных с гиперссылками, в презентациях.

Добавление URL‑гиперссылок

В этом разделе объясняется, как добавить URL‑гиперссылки к элементам слайда при работе с Aspose.Slides. Описывается назначение адресов ссылок тексту, фигурам и изображениям для обеспечения плавной навигации во время презентаций.

Добавление URL‑гиперссылок к тексту

Следующий пример кода демонстрирует, как добавить гиперссылку на веб‑сайт к тексту:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 600, 50, False)
    shape.add_text_frame("Aspose: File Format APIs")
    
    text_portion = shape.text_frame.paragraphs[0].portions[0]

    text_portion.portion_format.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    text_portion.portion_format.hyperlink_click.tooltip = "More than 70% of Fortune 100 companies trust Aspose APIs."

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Добавление URL‑гиперссылок к фигурам или кадрам

Следующий пример кода демонстрирует, как добавить гиперссылку на веб‑сайт к фигуре:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 600, 50)

    shape.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    shape.hyperlink_click.tooltip = "More than 70% of Fortune 100 companies trust Aspose APIs."

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Добавление URL‑гиперссылок к медиа

Aspose.Slides позволяет добавлять гиперссылки к изображениям, аудио‑ и видеофайлам.

Следующий пример кода демонстрирует, как добавить гиперссылку к изображению:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    # Добавить изображение в презентацию.
    with open("image.jpeg", "rb") as image_stream:
        image_data = image_stream.read()
        image = presentation.images.add_image(image_data)

    # Создать рамку изображения на слайде 1, используя ранее добавленное изображение.
    picture_frame = slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, image)

    picture_frame.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    picture_frame.hyperlink_click.tooltip = "More than 70% of Fortune 100 companies trust Aspose APIs."

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Следующий пример кода демонстрирует, как добавить гиперссылку к аудиофайлу:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    with open("audio.mp3", "rb") as audio_stream:
        audio_data = audio_stream.read()
        audio = presentation.audios.add_audio(audio_data)
        
    audio_frame = slide.shapes.add_audio_frame_embedded(10, 10, 100, 100, audio)

    audio_frame.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    audio_frame.hyperlink_click.tooltip = "More than 70% of Fortune 100 companies trust Aspose APIs."

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Следующий пример кода демонстрирует, как добавить гиперссылку к видео:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    with open("video.avi", "rb") as video_stream:
        video_data = video_stream.read()
        video = presentation.videos.add_video(video_data)
        
    video_frame = slide.shapes.add_video_frame(10, 10, 100, 100, video)

    video_frame.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    video_frame.hyperlink_click.tooltip = "More than 70% of Fortune 100 companies trust Aspose APIs."

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Использование гиперссылок для создания оглавления

Поскольку гиперссылки позволяют ссылаться на объекты или места, их можно использовать для построения оглавления.

Ниже приведён пример кода, показывающий, как создать оглавление с гиперссылками:

import aspose.slides as slides

with slides.Presentation() as presentation:
    first_slide = presentation.slides[0]
    second_slide = presentation.slides.add_empty_slide(first_slide.layout_slide)

    content_table = first_slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 40, 40, 300, 100)
    content_table.fill_format.fill_type = slides.FillType.NO_FILL
    content_table.line_format.fill_format.fill_type = slides.FillType.NO_FILL
    content_table.text_frame.paragraphs.clear()

    paragraph = slides.Paragraph()
    paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
    paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.black
    paragraph.text = "Title of slide 2 .......... "

    link_text_portion = slides.Portion()
    link_text_portion.text = "Page 2"
    link_text_portion.portion_format.hyperlink_manager.set_internal_hyperlink_click(second_slide)

    paragraph.portions.add(link_text_portion)
    content_table.text_frame.paragraphs.add(paragraph)

    presentation.save("link_to_slide.pptx", slides.export.SaveFormat.PPTX)

Форматирование гиперсылок

В этом разделе показано, как формировать внешний вид гиперссылок в Aspose.Slides. Вы узнаете, как управлять цветом и другими параметрами стиля, чтобы поддерживать единообразное форматирование гиперссылок в тексте, фигурах и изображениях.

Цвет гиперссылки

С помощью свойства color_source класса Hyperlink можно задать цвет гиперссылки и прочитать информацию о её цвете. Эта функция была введена в PowerPoint 2019, поэтому изменения, выполненные через это свойство, не применяются к более ранним версиям PowerPoint.

Следующий пример демонстрирует, как добавить гиперссылки с разными цветами к одному слайду:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 600, 50, False)
    shape1.add_text_frame("This is a sample of a colored hyperlink.")

    text_portion1 = shape1.text_frame.paragraphs[0].portions[0]
    text_portion1.portion_format.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    text_portion1.portion_format.hyperlink_click.color_source = slides.HyperlinkColorSource.PORTION_FORMAT
    text_portion1.portion_format.fill_format.fill_type = slides.FillType.SOLID
    text_portion1.portion_format.fill_format.solid_fill_color.color = draw.Color.red

    shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 200, 450, 50, False)
    shape2.add_text_frame("This is a sample of a regular hyperlink.")

    text_portion2 = shape2.text_frame.paragraphs[0].portions[0]
    text_portion2.portion_format.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")

    presentation.save("hyperlinks.pptx", slides.export.SaveFormat.PPTX)

Удаление гиперссылок из презентаций

В этом разделе объясняется, как удалять гиперссылки из презентаций при работе с Aspose.Slides. Вы узнаете, как очищать цели ссылок в тексте, фигурах и изображениях, сохраняя исходное содержание и форматирование.

Удаление гиперссылок из текста

Следующий пример кода показывает, как удалить гиперссылки из текста на слайде презентации:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]

    for shape in slide.shapes:
        if type(shape) is slides.AutoShape:
            for paragraph in shape.text_frame.paragraphs:
                for text_portion in paragraph.portions:
                    text_portion.portion_format.hyperlink_manager.remove_hyperlink_click()

    presentation.save("removed_hyperlinks.pptx", slides.export.SaveFormat.PPTX)

Удаление гиперссылок из фигур или кадров

Следующий пример кода показывает, как удалить гиперссылки из фигур на слайде презентации:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
   slide = presentation.slides[0]

   for shape in slide.shapes:
       shape.hyperlink_manager.remove_hyperlink_click()

   presentation.save("removed_hyperlinks.pptx", slides.export.SaveFormat.PPTX)

Изменяемые гиперссылки

Класс Hyperlink изменяемый. С помощью этого класса можно менять значения следующих свойств:

Следующий фрагмент кода демонстрирует, как добавить гиперссылку к слайду, а затем изменить её всплывающую подсказку:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 600, 50, False)
    shape.add_text_frame("Aspose: File Format APIs")

    text_portion = shape.text_frame.paragraphs[0].portions[0]
    text_portion.portion_format.hyperlink_click = slides.Hyperlink("https://www.aspose.com/")
    text_portion.portion_format.hyperlink_click.tooltip = "More than 70% of Fortune 100 companies trust Aspose APIs."

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Поддерживаемые свойства в IHyperlinkQueries

Вы можете получить доступ к HyperlinkQueries из презентации, слайда или текста, содержащего гиперссылку.

Класс HyperlinkQueries поддерживает следующие методы:

FAQ

Как создать внутреннюю навигацию не только к слайду, но и к «разделу» или первому слайду раздела?

Разделы в PowerPoint — это группы слайдов; навигация технически ориентирована на конкретный слайд. Чтобы «перейти к разделу», обычно делают ссылку на его первый слайд.

Могу ли я прикрепить гиперссылку к элементам шаблона слайда, чтобы она работала на всех слайдах?

Да. Элементы шаблона слайда и макета поддерживают гиперссылки. Такие ссылки отображаются на дочерних слайдах и кликабельны во время демонстрации.

Сохранятся ли гиперссылки при экспорте в PDF, HTML, изображения или видео?

В PDF и HTML ссылки, как правило, сохраняются. При экспорте в изображения и видео кликабельность не переносится из‑за характера этих форматов (растровые кадры/видео не поддерживают гиперссылки).