Конвертировать презентации PowerPoint в HTML в .NET
Обзор
Улучшите свой рабочий процесс, конвертируя презентации PowerPoint и OpenDocument в HTML с помощью Aspose.Slides для .NET. Это руководство предлагает подробные инструкции, надежные примеры кода и проверенные методы, обеспечивая надежный и эффективный процесс конвертации, оптимизированный для веб‑просмотра.
Aspose.Slides предоставляет множество вариантов — в основном из класса HtmlOptions — которые определяют процесс конвертации из формата PowerPoint (или OpenDocument) в HTML:
- Преобразовать всю презентацию PowerPoint в HTML.
- Преобразовать отдельный слайд презентации PowerPoint в HTML.
- Преобразовать медиаданные презентации (изображения, видео и т. д.) в HTML.
- Преобразовать презентацию PowerPoint в адаптивный HTML.
- Преобразовать презентацию PowerPoint в HTML с включенными или исключенными заметками докладчика.
- Преобразовать презентацию PowerPoint в HTML с включенными или исключенными комментариями.
- Преобразовать презентацию PowerPoint в HTML с оригинальными или встроенными шрифтами.
- Преобразовать презентацию PowerPoint в HTML, используя новый стиль CSS.
Преобразовать презентацию в HTML
С помощью Aspose.Slides вы можете преобразовать всю презентацию PowerPoint или OpenDocument в HTML следующим образом:
- Создайте экземпляр класса Presentation.
- Вызовите метод Save, чтобы сохранить объект в виде HTML‑файла.
// Создайте экземпляр класса Presentation, который представляет файл презентации (например, PPT, PPTX, ODP и т. д.).
using (Presentation presentation = new Presentation("presentation.pptx"))
{
// Сохраните презентацию в формате HTML.
presentation.Save("output.html", SaveFormat.Html);
}
Преобразовать презентацию в адаптивный HTML
Aspose.Slides предоставляет класс ResponsiveHtmlController, который позволяет генерировать адаптивные HTML‑файлы. Этот код демонстрирует, как преобразовать презентацию PowerPoint в адаптивный HTML на C#:
// Создайте экземпляр класса Presentation, который представляет файл презентации.
using (Presentation presentation = new Presentation("presentation.pptx"))
{
ResponsiveHtmlController controller = new ResponsiveHtmlController();
HtmlOptions htmlOptions = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(controller)
};
// Сохраните презентацию в формате HTML.
presentation.Save("responsive.html", SaveFormat.Html, htmlOptions);
}
Преобразовать презентацию в HTML с заметками докладчика
При конвертации презентации PowerPoint или OpenDocument в HTML с заметками докладчика важно сохранить полную сущность исходного документа. Этот процесс гарантирует, что не только визуальные элементы слайдов точно воспроизводятся, но и сопутствующие заметки докладчика сохраняются, обогащая содержание дополнительным контекстом и инсайтами.
Допустим, у нас есть презентация PowerPoint со следующим слайдом:

using (Presentation presentation = new Presentation("presentation.pptx"))
{
// Установить параметры для заметок докладчика.
NotesCommentsLayoutingOptions notesOptions = new NotesCommentsLayoutingOptions
{
NotesPosition = NotesPositions.BottomFull
};
// Установить параметры для выходного HTML-документа.
HtmlOptions htmlOptions = new HtmlOptions
{
SlidesLayoutOptions = notesOptions
};
// Сохранить презентацию в HTML с заметками докладчика.
presentation.Save("slide_with_notes.html", SaveFormat.Html, htmlOptions);
}
Результат:

Преобразовать презентацию в HTML с оригинальными шрифтами
Aspose.Slides предоставляет класс EmbedAllFontsHtmlController, который позволяет внедрять все шрифты презентации при её конвертации в HTML.
Чтобы предотвратить внедрение определённых шрифтов, вы можете передать массив имён шрифтов в параметризованный конструктор класса EmbedAllFontsHtmlController. Популярные шрифты, такие как Calibri или Arial, внедрять не требуется, поскольку большинство систем уже включают их. Их внедрение лишь ненужно увеличит размер получаемого HTML‑документа.
Класс EmbedAllFontsHtmlController поддерживает наследование и предоставляет метод WriteFont, который предполагается переопределять.
using (Presentation presentation = new Presentation("input.pptx"))
{
// Исключить шрифты презентации по умолчанию.
string[] excludeFonts = { "Calibri", "Arial" };
EmbedAllFontsHtmlController fontController = new EmbedAllFontsHtmlController(excludeFonts);
HtmlOptions htmlOptions = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(fontController)
};
presentation.Save("embedded_fonts.html", SaveFormat.Html, htmlOptions);
}
Преобразовать презентацию в HTML с изображениями высокого качества
По умолчанию при конвертации презентации PowerPoint в HTML Aspose.Slides создаёт небольшой HTML‑файл с изображениями 72 DPI и удаляет обрезанные области. Чтобы получить HTML‑файлы с изображениями более высокого качества, необходимо установить свойство PicturesCompression (из класса HtmlOptions) в значение 96 (т.е. PicturesCompression.Dpi96) или более высокое, как описано в этом справочнике.
Этот код на C# демонстрирует, как преобразовать презентацию PowerPoint в HTML, получая изображения высокого качества с разрешением 150 DPI (т.е. PicturesCompression.Dpi150):
using (Presentation presentation = new Presentation("input.pptx"))
{
HtmlOptions htmlOptions = new HtmlOptions
{
PicturesCompression = PicturesCompression.Dpi150
};
presentation.Save("output_dpi_150.html", SaveFormat.Html, htmlOptions);
}
Этот код на C# показывает, как преобразовать презентацию PowerPoint в HTML без удаления обрезанных областей:
using (Presentation presentation = new Presentation("input.pptx"))
{
HtmlOptions htmlOptions = new HtmlOptions
{
DeletePicturesCroppedAreas = false
};
presentation.Save("output_no_crop.html", SaveFormat.Html, htmlOptions);
}
Преобразовать слайд презентации в HTML
Чтобы преобразовать конкретный слайд презентации PowerPoint в HTML, необходимо создать экземпляр того же класса Presentation, который используется для конвертации всей презентации в HTML, а затем вызвать метод Save, чтобы сохранить файл в формате HTML. Класс HtmlOptions можно использовать для указания дополнительных параметров конвертации.
Этот код на C# демонстрирует, как преобразовать слайд с заметками докладчика в презентации PowerPoint в HTML:
public static void Run()
{
using (Presentation presentation = new Presentation("sample.pptx"))
{
NotesCommentsLayoutingOptions notesOptions = new NotesCommentsLayoutingOptions
{
NotesPosition = NotesPositions.BottomFull
};
HtmlOptions htmlOptions = new HtmlOptions
{
SlidesLayoutOptions = notesOptions,
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(new CustomFormattingController())
};
for (int i = 0; i < presentation.Slides.Count; i++)
{
int slideIndex = i + 1;
// Сохранить слайд в HTML‑файл.
string fileName = $"output_slide_{slideIndex}.html";
presentation.Save(fileName, new[] { slideIndex }, SaveFormat.Html, htmlOptions);
}
}
}
public class CustomFormattingController : IHtmlFormattingController
{
void IHtmlFormattingController.WriteDocumentStart(IHtmlGenerator generator, IPresentation presentation)
{}
void IHtmlFormattingController.WriteDocumentEnd(IHtmlGenerator generator, IPresentation presentation)
{}
void IHtmlFormattingController.WriteSlideStart(IHtmlGenerator generator, ISlide slide)
{
generator.AddHtml(string.Format(SlideHeader, generator.SlideIndex + 1));
}
void IHtmlFormattingController.WriteSlideEnd(IHtmlGenerator generator, ISlide slide)
{
generator.AddHtml(SlideFooter);
}
void IHtmlFormattingController.WriteShapeStart(IHtmlGenerator generator, IShape shape)
{}
void IHtmlFormattingController.WriteShapeEnd(IHtmlGenerator generator, IShape shape)
{}
private const string SlideHeader = "<div class=\"slide\" name=\"slide\" id=\"slide{0}\">";
private const string SlideFooter = "</div>";
}
Сохранить CSS и изображения при экспорте в HTML
С помощью новых файлов стилей CSS вы можете легко изменить внешний вид HTML‑файла, полученного в результате конвертации PowerPoint в HTML.
Код на C# в этом примере демонстрирует, как использовать переопределяемые методы для создания пользовательского HTML‑документа, включающего ссылку на файл CSS:
using (Presentation presentation = new Presentation("pres.pptx"))
{
CustomHeaderAndFontsController htmlController = new CustomHeaderAndFontsController("styles.css");
HtmlOptions options = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(htmlController),
};
presentation.Save("pres.html", SaveFormat.Html, options);
}
public class CustomHeaderAndFontsController : EmbedAllFontsHtmlController
{
// Шаблон пользовательского заголовка.
const string Header = "<!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" +
"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n" +
"<link rel=\"stylesheet\" type=\"text/css\" href=\"{0}\">\n" +
"</head>";
private readonly string m_cssFileName;
public CustomHeaderAndFontsController(string cssFileName)
{
m_cssFileName = cssFileName;
}
public override void WriteDocumentStart(IHtmlGenerator generator, IPresentation presentation)
{
generator.AddHtml(string.Format(Header, m_cssFileName));
WriteAllFonts(generator, presentation);
}
public override void WriteAllFonts(IHtmlGenerator generator, IPresentation presentation)
{
generator.AddHtml("<!-- Embedded fonts -->");
base.WriteAllFonts(generator, presentation);
}
}
Связать все шрифты при конвертации презентации в HTML
Если вы не хотите внедрять шрифты (чтобы не увеличивать размер получаемого HTML), вы можете связать все шрифты, реализовав собственную версию LinkAllFontsHtmlController.
Этот код на C# показывает, как преобразовать презентацию PowerPoint в HTML, связывая все шрифты и исключая “Calibri” и “Arial” (поскольку они уже установлены в системе):
using (Presentation presentation = new Presentation("pres.pptx"))
{
// Исключить шрифты презентации по умолчанию.
string[] fontNameExcludeList = { "Calibri", "Arial" };
LinkAllFontsHtmlController linkcont = new LinkAllFontsHtmlController(fontNameExcludeList, @"C:\Windows\Fonts\");;
HtmlOptions htmlOptionsEmbed = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(linkcont)
};
presentation.Save("pres.html", SaveFormat.Html, htmlOptionsEmbed);
}
Этот код на C# демонстрирует, как реализован LinkAllFontsHtmlController:
public class LinkAllFontsHtmlController : EmbedAllFontsHtmlController
{
private readonly string m_basePath;
public LinkAllFontsHtmlController(string[] fontNameExcludeList, string basePath) : base(fontNameExcludeList)
{
m_basePath = basePath;
}
public override void WriteFont
(
IHtmlGenerator generator,
IFontData originalFont,
IFontData substitutedFont,
string fontStyle,
string fontWeight,
byte[] fontData)
{
try
{
string fontName = substitutedFont == null ? originalFont.FontName : substitutedFont.FontName;
string path = fontName + ".woff"; // Возможно потребуется очистка пути.
File.WriteAllBytes(Path.Combine(m_basePath, path), fontData);
generator.AddHtml("<style>");
generator.AddHtml("@font-face { ");
generator.AddHtml("font-family: '" + fontName + "'; ");
generator.AddHtml("src: url('" + path + "')");
generator.AddHtml(" }");
generator.AddHtml("</style>");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Преобразовать презентацию с SVG‑изображениями в адаптивный HTML
Этот код на C# показывает, как преобразовать презентацию PowerPoint в адаптивный HTML:
using (Presentation presentation = new Presentation("Presentation.pptx"))
{
HtmlOptions saveOptions = new HtmlOptions
{
SvgResponsiveLayout = true
};
presentation.Save("SvgResponsiveLayout-out.html", SaveFormat.Html, saveOptions);
}
Экспортировать медиа‑файлы в HTML
С помощью Aspose.Slides для .NET вы можете экспортировать медиа‑файлы следующим образом:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд.
- Добавьте видео на слайд.
- Запишите презентацию в виде HTML‑файла.
// Создать новую презентацию.
using (Presentation presentation = new Presentation())
{
string path = "C:/out/";
const string fileName = "ExportMediaFiles_out.html";
const string baseUri = "http://www.example.com/";
using (FileStream fileStream = new FileStream("my_video.avi", FileMode.Open, FileAccess.Read))
{
IVideo video = presentation.Videos.AddVideo(fileStream, LoadingStreamBehavior.ReadStreamAndRelease);
ISlide slide = presentation.Slides[0];
slide.Shapes.AddVideoFrame(10, 10, 100, 100, video);
}
VideoPlayerHtmlController controller = new VideoPlayerHtmlController(path, fileName, baseUri);
// Установить параметры HTML.
HtmlOptions htmlOptions = new HtmlOptions(controller);
SVGOptions svgOptions = new SVGOptions(controller);
htmlOptions.HtmlFormatter = HtmlFormatter.CreateCustomFormatter(controller);
htmlOptions.SlideImageFormat = SlideImageFormat.Svg(svgOptions);
// Сохранить презентацию в HTML‑файл.
presentation.Save(Path.Combine(path, fileName), SaveFormat.Html, htmlOptions);
}
Aspose разработала бесплатные конвертеры презентацию в HTML: PPT в HTML, PPTX в HTML, ODP в HTML, и т. д.
Note
Помимо описанных здесь процессов конвертации, Aspose.Slides также поддерживает следующие операции конвертации, связанные с форматом HTML:
FAQ
Какова производительность Aspose.Slides при конвертации нескольких презентаций в HTML?
Производительность зависит от размера и сложности презентаций. Aspose.Slides обладает высокой эффективностью и масштабируемостью для пакетных операций. Для достижения оптимальной производительности при конвертации большого количества презентаций рекомендуется использовать многопоточность или параллельную обработку, когда это возможно.
Поддерживает ли Aspose.Slides экспорт гиперссылок в HTML?
Да, Aspose.Slides полностью поддерживает экспорт встроенных гиперссылок в HTML. При конвертации презентаций в формат HTML гиперссылки автоматически сохраняются и остаются кликабельными.
Есть ли ограничение на количество слайдов при конвертации презентаций в HTML?
Ограничений на количество слайдов при использовании Aspose.Slides нет. Вы можете конвертировать презентации любого размера. Однако для презентаций, содержащих очень большое количество слайдов, производительность может зависеть от доступных ресурсов вашего сервера или системы.
