Преобразование PowerPoint в HTML на C# .NET
Обзор
В этой статье объясняется, как преобразовать презентацию PowerPoint в формат HTML с использованием C#. Внутри рассматриваются следующие темы.
- Преобразование PowerPoint в HTML на C#
- Преобразование PPT в HTML на C#
- Преобразование PPTX в HTML на C#
- Преобразование ODP в HTML на C#
- Преобразование слайда PowerPoint в HTML на C#
C# PowerPoint в HTML
Для примера кода на C# для преобразования PowerPoint в HTML смотрите раздел ниже, т.е. Преобразование PowerPoint в HTML. Код может загружать множество форматов, таких как PPT, PPTX и ODP в объект Presentation и сохранять его в формате HTML.
О преобразовании PowerPoint в HTML
Используя Aspose.Slides для .NET, приложения и разработчики могут преобразовать презентацию PowerPoint в HTML: PPTX в HTML или PPT в HTML.
Aspose.Slides предлагает множество опций (в основном из класса HtmlOptions), которые определяют процесс преобразования PowerPoint в HTML:
- Преобразование всей презентации PowerPoint в HTML.
- Преобразование конкретного слайда в презентации PowerPoint в HTML.
- Преобразование мультимедиа презентации (изображения, видео и т.д.) в HTML.
- Преобразование презентации PowerPoint в адаптивный HTML.
- Преобразование презентации PowerPoint в HTML с заметками спикера, включенными или исключенными.
- Преобразование презентации PowerPoint в HTML с комментариями, включенными или исключенными.
- Преобразование презентации PowerPoint в HTML с оригинальными или встроенными шрифтами.
- Преобразование презентации PowerPoint в HTML с использованием нового CSS-стиля.
Используя свой собственный API, Aspose разработал бесплатные конвертеры презентаций в HTML: PPT в HTML, PPTX в HTML, ODP в HTML и т.д.
Вы можете также посмотреть другие бесплатные конвертеры от Aspose.
Примечание
Кроме описанных здесь процессов преобразования, Aspose.Slides также поддерживает операции преобразования, касающиеся формата HTML:
Преобразование PowerPoint в HTML
С использованием Aspose.Slides вы можете преобразовать всю презентацию PowerPoint в HTML следующим образом:
- Создайте экземпляр класса Presentation.
- Используйте метод Save , чтобы сохранить объект в виде HTML-файла.
Этот код показывает, как преобразовать PowerPoint в HTML на C#:
// Создание объекта презентации, представляющего файл презентации, например PPT, PPTX, ODP и т.д.
using (Presentation presentation = new Presentation("Convert_HTML.pptx"))
{
HtmlOptions htmlOpt = new HtmlOptions();
INotesCommentsLayoutingOptions options = htmlOpt.NotesCommentsLayouting;
options.NotesPosition = NotesPositions.BottomFull;
htmlOpt.HtmlFormatter = HtmlFormatter.CreateDocumentFormatter("", false);
// Сохранение презентации в HTML
presentation.Save("ConvertWholePresentationToHTML_out.html", SaveFormat.Html, htmlOpt);
}
Преобразование PowerPoint в адаптивный HTML
Aspose.Slides предоставляет класс ResponsiveHtmlController , который позволяет генерировать адаптивные HTML-файлы. Этот код показывает, как преобразовать презентацию PowerPoint в адаптивный HTML на C#:
// Создание объекта Presentation, представляющего файл презентации
using (Presentation presentation = new Presentation("Convert_HTML.pptx"))
{
ResponsiveHtmlController controller = new ResponsiveHtmlController();
HtmlOptions htmlOptions = new HtmlOptions { HtmlFormatter = HtmlFormatter.CreateCustomFormatter(controller) };
// Сохранение презентации в HTML
presentation.Save("ConvertPresentationToResponsiveHTML_out.html", SaveFormat.Html, htmlOptions);
}
Преобразование PowerPoint в HTML с заметками
Этот код показывает, как преобразовать PowerPoint в HTML с заметками на C#:
using (Presentation pres = new Presentation("Presentation.pptx"))
{
HtmlOptions opt = new HtmlOptions();
INotesCommentsLayoutingOptions options = opt.NotesCommentsLayouting;
options.NotesPosition = NotesPositions.BottomFull;
// Сохранение страниц с заметками
pres.Save("Output.html", SaveFormat.Html, opt);
}
Преобразование PowerPoint в HTML с оригинальными шрифтами
Aspose.Slides предоставляет класс EmbedAllFontsHtmlController, который позволяет встроить все шрифты в презентацию при преобразовании презентации в HTML.
Чтобы предотвратить встраивание определенных шрифтов, вы можете передать массив названий шрифтов в параметризованный конструктор класса EmbedAllFontsHtmlController. Популярные шрифты, такие как Calibri или Arial, при использовании в презентации не нужно встраивать, так как большинство систем уже содержат такие шрифты. Когда эти шрифты встраивают, результирующий HTML-документ становится ненужным образом большим.
Класс EmbedAllFontsHtmlController поддерживает наследование и предоставляет метод WriteFont, который предназначен для переопределения.
using (Presentation pres = new Presentation("input.pptx"))
{
// Исключает шрифты презентации по умолчанию
string[] fontNameExcludeList = { "Calibri", "Arial" };
EmbedAllFontsHtmlController embedFontsController = new EmbedAllFontsHtmlController(fontNameExcludeList);
HtmlOptions htmlOptionsEmbed = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(embedFontsController)
};
pres.Save("input-PFDinDisplayPro-Regular-installed.html", SaveFormat.Html, htmlOptionsEmbed);
}
Преобразование PowerPoint в HTML с изображениями высокого качества
По умолчанию, когда вы преобразуете PowerPoint в HTML, Aspose.Slides выводит маленький HTML с изображениями при 72 DPI и удаленными обрезанными областями. Чтобы получить HTML-файлы с изображениями более высокого качества, вам необходимо установить свойство PicturesCompression
(из класса HtmlOptions
) на 96 (т.е. PicturesCompression.Dpi96
) или более высокие значения.
Этот код на C# показывает, как преобразовать презентацию PowerPoint в HTML, получая изображения высокого качества при 150 DPI (т.е. PicturesCompression.Dpi150
):
Presentation pres = new Presentation("InputDoc.pptx");
HtmlOptions htmlOpts = new HtmlOptions
{
PicturesCompression = PicturesCompression.Dpi150
};
pres.Save("OutputDoc-dpi150.html", Aspose.Slides.Export.SaveFormat.Html, htmlOpts);
Этот код на C# показывает, как вывести HTML с изображениями полного качества:
Presentation pres = new Presentation("InputDoc.pptx");
HtmlOptions htmlOpts = new HtmlOptions
{
DeletePicturesCroppedAreas = false
};
pres.Save("Outputdoc-noCrop.html", Aspose.Slides.Export.SaveFormat.Html, htmlOpts);
Преобразование слайда в HTML
Чтобы преобразовать конкретный слайд в PowerPoint в HTML, вам необходимо создать экземпляр того же класса Presentation (используемого для преобразования целых презентаций в HTML) и затем использовать метод Save , чтобы сохранить файл в виде HTML. Класс HtmlOptions может использоваться для указания дополнительных параметров преобразования:
Этот код на C# показывает, как преобразовать слайд в презентации PowerPoint в HTML:
public static void Run()
{
using (Presentation presentation = new Presentation("Individual-Slide.pptx"))
{
HtmlOptions htmlOptions = new HtmlOptions();
INotesCommentsLayoutingOptions options = htmlOptions.NotesCommentsLayouting;
options.NotesPosition = NotesPositions.BottomFull;
htmlOptions.HtmlFormatter = HtmlFormatter.CreateCustomFormatter(new CustomFormattingController());
// Сохранение файла
for (int i = 0; i < presentation.Slides.Count; i++)
presentation.Save("Individual Slide" + (i + 1) + "_out.html", new[] { i + 1 }, 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 pres = new Presentation("pres.pptx"))
{
CustomHeaderAndFontsController htmlController = new CustomHeaderAndFontsController("styles.css");
HtmlOptions options = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(htmlController),
};
pres.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("<!-- Встроенные шрифты -->");
base.WriteAllFonts(generator, presentation);
}
}
Ссылка на все шрифты при преобразовании презентации в HTML
Если вы не хотите встраивать шрифты (чтобы избежать увеличения размера результирующего HTML), вы можете ссылаться на все шрифты, реализовав собственную версию LinkAllFontsHtmlController
.
Этот код на C# показывает, как преобразовать PowerPoint в HTML, ссылаясь на все шрифты и исключая “Calibri” и “Arial” (так как они уже существуют в системе):
using (Presentation pres = new Presentation("pres.pptx"))
{
// Исключает шрифты презентации по умолчанию
string[] fontNameExcludeList = { "Calibri", "Arial" };
Paragraph para = new Paragraph();
ITextFrame txt;
LinkAllFontsHtmlController linkcont = new LinkAllFontsHtmlController(fontNameExcludeList, @"C:\Windows\Fonts\");;
HtmlOptions htmlOptionsEmbed = new HtmlOptions
{
HtmlFormatter = HtmlFormatter.CreateCustomFormatter(linkcont)
};
pres.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);
}
}
}
Преобразование PowerPoint в адаптивный HTML
Этот код на C# показывает, как преобразовать презентацию PowerPoint в адаптивный HTML:
Presentation presentation = new Presentation("SomePresentation.pptx");
HtmlOptions saveOptions = new HtmlOptions();
saveOptions.SvgResponsiveLayout = true;
presentation.Save("SomePresentation-out.html", SaveFormat.Html, saveOptions);
Экспорт медиафайлов в HTML
С использованием Aspose.Slides для .NET вы можете экспортировать медиафайлы таким образом:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд.
- Добавьте видео на слайд.
- Запишите презентацию в виде HTML-файла.
Этот код на C# показывает, как добавить видео в презентацию и затем сохранить ее как HTML:
// Загружает презентацию
using (Presentation pres = 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 = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.ReadStreamAndRelease);
ISlide slide = pres.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);
// Сохранение файла
pres.Save(Path.Combine(path, fileName), SaveFormat.Html, htmlOptions);
}