Преобразовать презентации PowerPoint в HTML с помощью Python

Обзор

Aspose.Slides for Python via .NET может сохранять презентации PowerPoint в HTML без Microsoft PowerPoint. Базовое преобразование представляет собой загрузку одного Presentation и вызов save с SaveFormat. Используйте HtmlOptions, когда требуется управлять экспортируемым макетом, шрифтами, изображениями, примечаниями, комментариями, выводом SVG или связанными ресурсами.

Это руководство сосредоточено на практических сценариях экспорта в HTML:

  • Экспорт всей презентации или выбранных слайдов.
  • Генерация фиксированного, адаптивного или SVG‑основанного HTML.
  • Включение заметок выступающего и комментариев.
  • Управление качеством изображений и данными обрезанных изображений.
  • Встраивание шрифтов или сохранение файлов шрифтов отдельно.
  • Выбор способа записи и ссылки на внешние ресурсы и медиа‑файлы.

По умолчанию экспорт в HTML создает самодостаточный HTML‑документ, в котором большинство ресурсов внедрено. Это удобно для обмена одним файлом, но может увеличить размер вывода. Для публикации в вебе рассмотрите внешние ресурсы, уменьшите DPI изображений и внедряйте только те шрифты, которые недоступны в целевой среде.

Конвертировать презентацию в HTML

Чтобы экспортировать презентацию в HTML, загрузите её с помощью Presentation и сохраните с помощью SaveFormat.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    presentation.save("presentation.html", slides.export.SaveFormat.HTML)

В этом примере пишется один HTML‑файл. Оператор with освобождает объект презентации и закрывает файловые дескрипторы и ресурсы рендеринга после экспорта.

Использовать HtmlOptions

HtmlOptions — основной класс конфигурации экспорта в HTML. Общие параметры включают:

  • slides_layout_options: добавляет заметки, комментарии, раздаточные материалы или другую информацию о макете.
  • html_formatter: изменяет структуру HTML‑документа или делегирует форматирование контроллеру.
  • slide_image_format: меняет способ представления слайдов, например как SVG.
  • pictures_compression: управляет DPI изображений и размером вывода.
  • delete_pictures_cropped_areas: сохраняет или удаляет данные обрезанных изображений.
  • svg_responsive_layout: заставляет экспортированный SVG‑контент адаптироваться к контейнеру.
  • show_hidden_slides: включает скрытые слайды при необходимости.

Ниже перечислены наиболее часто используемые параметры отдельно, чтобы вы могли комбинировать только те, которые нужны вашему рабочему процессу.

Конвертировать выбранные слайды в HTML

Перегрузка save, принимающая номера слайдов, использует позиции, нумеруемые с 1. Цикл ниже сохраняет каждый слайд в отдельный HTML‑файл.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    slide_count = len(presentation.slides)

    for slide_index in range(slide_count):
        slide_number = slide_index + 1
        slide_numbers = [slide_number]
        html_file_name = "slide-{}.html".format(slide_number)

        presentation.save(html_file_name, slide_numbers, slides.export.SaveFormat.HTML)

Используйте этот шаблон, когда веб‑сайт или приложение требует одну HTML‑страницу на каждый слайд. Если все слайды должны иметь одинаковый макет, создайте один объект HtmlOptions и передайте его каждому вызову save.

Создать адаптивный HTML

ResponsiveHtmlController обеспечивает адаптивный вывод HTML через HtmlFormatter. Используйте его, когда экспортируемая страница должна лучше подстраиваться под ширину браузера.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    controller = slides.export.ResponsiveHtmlController()
    formatter = slides.export.HtmlFormatter.create_custom_formatter(controller)

    html_options = slides.export.HtmlOptions()
    html_options.html_formatter = formatter

    presentation.save("presentation-responsive.html", slides.export.SaveFormat.HTML, html_options)

Для адаптивного макета на основе SVG установите svg_responsive_layout в HtmlOptions. Это полезно, когда содержание слайда экспортируется как масштабируемая разметка SVG.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    html_options = slides.export.HtmlOptions()
    html_options.svg_responsive_layout = True

    presentation.save("presentation-svg-responsive.html", slides.export.SaveFormat.HTML, html_options)

Включить заметки выступающего и комментарии

Через html_options.slides_layout_options используйте NotesCommentsLayoutingOptions, чтобы включить заметки выступающего или комментарии. По умолчанию заметки и комментарии скрыты, если только вы не зададите их положения.

Предположим, исходная презентация содержит заметки выступающего:

Слайд с заметками выступающего в PowerPoint

Следующий код экспортирует содержимое слайда с заметками под слайдом.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    layout_options = slides.export.NotesCommentsLayoutingOptions()
    layout_options.notes_position = slides.export.NotesPositions.BOTTOM_FULL

    html_options = slides.export.HtmlOptions()
    html_options.slides_layout_options = layout_options

    presentation.save("presentation-with-notes.html", slides.export.SaveFormat.HTML, html_options)

Экспортированный HTML включает область заметок:

HTML‑вывод со слайдом и заметками выступающего

Чтобы экспортировать комментарии, задайте comments_position, например CommentsPositions.RIGHT или CommentsPositions.BOTTOM. Если нужны только комментарии, опустите notes_position. Если нужны и заметки, и комментарии, задайте оба свойства.

Управление качеством изображений и обрезанными областями

Экспорт в HTML может сжимать изображения слайдов для уменьшения размера вывода. Установите pictures_compression в значение из PicturesCompression, когда требуется более высокое качество изображений.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    html_options = slides.export.HtmlOptions()
    html_options.pictures_compression = slides.export.PicturesCompression.DPI150

    presentation.save("presentation-dpi-150.html", slides.export.SaveFormat.HTML, html_options)

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

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    html_options = slides.export.HtmlOptions()
    html_options.delete_pictures_cropped_areas = False

    presentation.save("presentation-with-cropped-areas.html", slides.export.SaveFormat.HTML, html_options)

Добавить CSS

Для простого стилизования передайте строку CSS в HtmlFormatter. Это изменит внешний HTML‑документ, пока Aspose.Slides продолжает рендерить содержимое слайдов.

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    css_rules = "body { margin: 0; background: #f7f7f7; } .slide { margin: 24px auto; }"
    formatter = slides.export.HtmlFormatter.create_document_formatter(css_rules, True)

    html_options = slides.export.HtmlOptions()
    html_options.html_formatter = formatter

    presentation.save("presentation-styled.html", slides.export.SaveFormat.HTML, html_options)

Для пользовательской шапки документа, подключённого CSS‑файла или произвольной разметки вокруг слайдов и фигур используйте пользовательский контроллер форматирования и передайте его в HtmlFormatter через create_custom_formatter.

Встраивание шрифтов

Если в целевой среде шрифты презентации могут быть не установлены, внедрите их в HTML с помощью [EmbedAllFontsHtmlController](https://reference.aspose.com/slides/ru/python-net/aspose.sl