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

Обзор

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

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

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

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

Преобразование презентации в HTML

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

$presentation = new Presentation("presentation.pptx");
try {
    $presentation->save("presentation.html", SaveFormat::Html);
} finally {
    $presentation->dispose();
}

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

Использование HtmlOptions

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

  • SlidesLayoutOptions: добавляет заметки, комментарии, раздаточные материалы или другую информацию о макете.
  • HtmlFormatter: изменяет структуру HTML‑документа или делегирует форматирование контроллеру.
  • SlideImageFormat: изменяет способ представления слайдов, например как SVG.
  • PicturesCompression: управляет DPI изображений и размером результата.
  • DeletePicturesCroppedAreas: сохраняет или удаляет данные обрезанных изображений.
  • SvgResponsiveLayout: делает экспортированный SVG‑контент адаптивным к контейнеру.
  • ShowHiddenSlides: включает скрытые слайды, если это необходимо.

В следующих разделах показаны наиболее распространённые параметры отдельно, чтобы вы могли комбинировать только те, которые требуются вашему рабочему процессу.

Преобразование выбранных слайдов в HTML

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

$presentation = new Presentation("presentation.pptx");
try {
    $slideCount = java_values($presentation->getSlides()->size());

    for ($slideIndex = 0; $slideIndex < $slideCount; $slideIndex++) {
        $slideNumber = $slideIndex + 1;
        $slideNumbers = array($slideNumber);
        $htmlFileName = "slide-" . $slideNumber . ".html";

        $presentation->save($htmlFileName, $slideNumbers, SaveFormat::Html);
    }
} finally {
    $presentation->dispose();
}

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

Создание адаптивного HTML

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

$presentation = new Presentation("presentation.pptx");
try {
    $controller = new ResponsiveHtmlController();
    $formatter = java("com.aspose.slides.HtmlFormatter")->createCustomFormatter($controller);

    $htmlOptions = new HtmlOptions();
    $htmlOptions->setHtmlFormatter($formatter);

    $presentation->save("presentation-responsive.html", SaveFormat::Html, $htmlOptions);
} finally {
    $presentation->dispose();
}

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

$presentation = new Presentation("presentation.pptx");
try {
    $htmlOptions = new HtmlOptions();
    $htmlOptions->setSvgResponsiveLayout(true);

    $presentation->save("presentation-svg-responsive.html", SaveFormat::Html, $htmlOptions);
} finally {
    $presentation->dispose();
}

Включение заметок докладчика и комментариев

Используйте NotesCommentsLayoutingOptions через HtmlOptions.SlidesLayoutOptions, чтобы включить заметки докладчика или комментарии. Заметки и комментарии скрыты по умолчанию, если только вы не укажете их позиции.

Предположим, исходная презентация содержит заметки докладчика:

Слайд с заметками докладчика в PowerPoint

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

$presentation = new Presentation("presentation.pptx");
try {
    $layoutOptions = new NotesCommentsLayoutingOptions();
    $layoutOptions->setNotesPosition(NotesPositions::BottomFull);

    $htmlOptions = new HtmlOptions();
    $htmlOptions->setSlidesLayoutOptions($layoutOptions);

    $presentation->save("presentation-with-notes.html", SaveFormat::Html, $htmlOptions);
} finally {
    $presentation->dispose();
}

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

![HTML‑результат