Преобразование презентаций в HTML5 на C++
Обзор
Эта статья объясняет, как преобразовать презентации PowerPoint в HTML5 с помощью Aspose.Slides для C++. Описывается базовый экспорт, управление анимацией фигур и переходами слайдов, а также расположение комментариев. Также сравнивается вывод HTML5 с выводом SVG‑формата стандартного экспорта HTML.
Экспорт PowerPoint в HTML5
Следующий пример загружает презентацию из текущего каталога и сохраняет её в формате HTML5. Он использует параметры экспорта по умолчанию; в следующем примере показано, как явно управлять воспроизведением анимации. Замените путь к входному файлу на путь к вашей презентации.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"pres.html", SaveFormat::Html5);
presentation->Dispose();
Note
Помимо HTML‑документа, экспорт записывает поддерживающие файлы CSS и JavaScript для оформления слайдов, анимаций, эффектов и навигации. Сохраняйте эти файлы вместе с HTML‑документом при перемещении или публикации результата. Сгенерированная страница также загружает jQuery и Anime.js из публичных CDN; без них навигация по слайдам и анимации не работают.Чтобы экспортировать без воспроизведения анимаций фигур или переходов слайдов, передайте false в set_AnimateShapes и set_AnimateTransitions в Html5Options. Эти параметры независимы, поэтому можно включить один, отключив другой. Пример экспортирует презентацию с отключёнными обоими типами анимации в сгенерированной странице.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_AnimateShapes(false);
html5Options->set_AnimateTransitions(false);
auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"pres5.html", SaveFormat::Html5, html5Options);
presentation->Dispose();
Экспорт PowerPoint в HTML
Стандартный экспорт HTML использует иной подход к рендерингу: содержимое слайда представлено в виде SVG внутри HTML‑страницы. Следующий пример преобразует презентацию в HTML‑документ, используя этот подход.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"pres.html", SaveFormat::Html);
presentation->Dispose();
Упрощённая разметка ниже иллюстрирует структуру сгенерированной страницы. Элемент SVG содержит отрисованное содержимое слайда; заменяющий текст представляет это содержимое и не является буквальным выводом экспорта.
<body>
<div class="slide" name="slide" id="slideslideIface1">
<svg version="1.1">
<g> THE SLIDE CONTENT GOES HERE </g>
</svg>
</div>
</body>
Warning
Экспорт на основе SVG не раскрывает фигуры PowerPoint как отдельные HTML‑элементы. Используйте экспорт HTML5, когда нужны параметры анимации фигур и переходов слайдов, продемонстрированные в этой статье.Экспорт PowerPoint в представление слайдов HTML5
Экспорт HTML5 создаёт страницу для просмотра и навигации слайдами презентации в браузере. В этом примере в оба метода set_AnimateShapes и set_AnimateTransitions передаётся true, чтобы экспортируемый просмотр слайдов мог воспроизводить эффекты исходной презентации.
Используйте презентацию, уже содержащую анимацию фигур и переходы слайдов, чтобы увидеть эффект этих настроек. Включение их не добавляет новых эффектов к слайдам, у которых их нет. После экспорта откройте сгенерированный HTML5‑документ в браузере с доступными поддерживающими файлами.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_AnimateShapes(true);
html5Options->set_AnimateTransitions(true);
auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"HTML5-slide-view.html", SaveFormat::Html5, html5Options);
presentation->Dispose();
Преобразовать презентацию в документ HTML5 с комментариями
Вы можете включить существующие комментарии к слайдам в вывод HTML5, чтобы читатели могли видеть обратную связь рядом с содержимым слайда. Пример в этом разделе предполагает, что исходная презентация содержит комментарии, как показано ниже. Он экспортирует эти комментарии; новые комментарии не создаются.

Передайте объект NotesCommentsLayoutingOptions в метод set_SlidesLayoutOptions класса Html5Options. Вызовите set_CommentsPosition с параметром CommentsPositions::Right из перечисления CommentsPositions, чтобы разместить комментарии справа от каждого слайда.
Следующий пример экспортирует презентацию в HTML5 с таким расположением комментариев. Презентация без комментариев не будет содержать текст комментариев для отображения.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>
#include <Export/NotesCommentsLayoutingOptions.h>
#include <Export/CommentsPositions.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto layoutOptions = System::MakeObject<NotesCommentsLayoutingOptions>();
layoutOptions->set_CommentsPosition(CommentsPositions::Right);
auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_SlidesLayoutOptions(layoutOptions);
auto presentation = System::MakeObject<Presentation>(u"sample.pptx");
presentation->Save(u"output.html", SaveFormat::Html5, html5Options);
presentation->Dispose();
Изображение ниже показывает экспортированный документ HTML5 с комментариями, отображаемыми рядом со слайдом.

Исключить JavaScript‑гиперссылки при экспорте
Предположим, что hyperlinks.pptx содержит текст со ссылкой javascript:alert('Hello') и обычную ссылку https://example.com/. Чтобы исключить JavaScript‑гиперссылку при экспорте, вызовите SaveOptions::set_SkipJavaScriptLinks с параметром true. По умолчанию значение false, поэтому такие ссылки не фильтруются, если не включить опцию.
Следующий пример загружает презентацию из текущего каталога и экспортирует её с помощью Html5Options:
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_SkipJavaScriptLinks(true);
auto presentation = System::MakeObject<Presentation>(u"hyperlinks.pptx");
presentation->Save(u"filtered-html5.html", SaveFormat::Html5, html5Options);
presentation->Dispose();
Экспортированный файл опускает JavaScript‑гиперссылку, сохранив её текст и обычную HTTPS‑ссылку. Исходная презентация остаётся неизменной.
Эта опция фильтрует JavaScript‑гиперссылки; она не удаляет все скрипты или другой активный контент и не гарантирует соответствие CSP. Например, вывод HTML5 по‑прежнему включает скрипты для навигации по слайдам и анимаций.
Вопросы и ответы
Могу ли я управлять тем, будут ли анимации объектов и переходы слайдов воспроизводиться в HTML5?
Да, экспорт HTML5 предоставляет отдельные параметры для включения или отключения shape animations и slide transitions.
Поддерживаются ли комментарии и где их можно разместить относительно слайда?
Да, существующие комментарии можно включить в вывод HTML5 и разместить (например, справа от слайда) с помощью layout settings для заметок и комментариев.
Могу ли я пропустить ссылки, вызывающие JavaScript, по соображениям безопасности или CSP?
Да, метод set_SkipJavaScriptLinks позволяет пропускать гиперссылки с вызовами JavaScript при сохранении. По умолчанию значение false. Смотрите Исключить JavaScript‑гиперссылки при экспорте для примера экспорта HTML5 и области действия фильтра. Эта настройка не удаляет JavaScript, используемый просмотрщиком HTML5 для навигации и анимаций.