Создать просмотрщик презентаций на C#

Обзор

Aspose.Slides for .NET используется для создания файлов презентаций со слайдами. Эти слайды можно просматривать, открывая презентацию в Microsoft PowerPoint, например. Однако разработчикам иногда требуется просматривать слайды в виде изображений в предпочитаемом просмотрщике изображений или использовать их в кастомном просмотрщике презентаций. В таких случаях Aspose.Slides позволяет экспортировать отдельные слайды как изображения. Эта статья объясняет, как это сделать.

Создание SVG‑изображения со слайда

Чтобы создать SVG‑изображение из слайда презентации с помощью Aspose.Slides, выполните следующие действия:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Откройте файловый поток.
  4. Сохраните слайд как SVG‑изображение в файловый поток.
int slideIndex = 0;

using (Presentation presentation = new Presentation("sample.pptx"))
{
    ISlide slide = presentation.Slides[slideIndex];

    using (FileStream svgStream = File.Create("output.svg"))
    {
        slide.WriteAsSvg(svgStream);
    }
}

Создание SVG с пользовательским ID фигуры

Aspose.Slides можно использовать для создания SVG из слайда с пользовательским ID фигуры. Для этого используйте свойство Id интерфейса ISvgShape. Класс CustomSvgShapeFormattingController позволяет задать ID фигуры.

int slideIndex = 0;

using (Presentation presentation = new Presentation("sample.odp"))
{
    ISlide slide = presentation.Slides[slideIndex];
    
    SVGOptions svgOptions = new SVGOptions
    {
        ShapeFormattingController = new CustomSvgShapeFormattingController()
    };

    using (FileStream svgStream = File.Create("output.svg"))
    {
        slide.WriteAsSvg(svgStream, svgOptions);
    }
}
class CustomSvgShapeFormattingController : ISvgShapeFormattingController
{
    private int m_shapeIndex;

    public CustomSvgShapeFormattingController(int shapeStartIndex = 0)
    {
        m_shapeIndex = shapeStartIndex;
    }

    public void FormatShape(ISvgShape svgShape, IShape shape)
    {
        svgShape.Id = string.Format("shape-{0}", m_shapeIndex++);
    }
}

Создание миниатюры слайда

Aspose.Slides помогает генерировать миниатюры слайдов. Чтобы создать миниатюру слайда с помощью Aspose.Slides, выполните следующие действия:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Создайте изображение‑миниатюру указанного слайда в нужном масштабе.
  4. Сохраните изображение‑миниатюру в предпочитаемом формате изображения.
int slideIndex = 0;
float scaleX = 1;
float scaleY = scaleX;

using (Presentation presentation = new Presentation("sample.pptx"))
{
    ISlide slide = presentation.Slides[slideIndex];

    using (IImage image = slide.GetImage(scaleX, scaleY))
    {
        image.Save("output.jpg", ImageFormat.Jpeg);
    }
}

Создание миниатюры слайда с пользовательскими размерами

Чтобы создать изображение‑миниатюру слайда с пользовательскими размерами, выполните следующие действия:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Сгенерируйте изображение‑миниатюру указанного слайда с заданными размерами.
  4. Сохраните изображение‑миниатюру в предпочитаемом формате изображения.
int slideIndex = 0;
Size slideSize = new Size(1200, 800);

using (Presentation presentation = new Presentation("sample.odp"))
{
    ISlide slide = presentation.Slides[slideIndex];

    using (IImage image = slide.GetImage(slideSize))
    {
        image.Save("output.jpg", ImageFormat.Jpeg);
    }
}

Создание миниатюры слайда с заметками докладчика

Чтобы создать миниатюру слайда с заметками докладчика с помощью Aspose.Slides, выполните следующие действия:

  1. Создайте экземпляр класса RenderingOptions .
  2. Используйте свойство RenderingOptions.SlidesLayoutOptions для установки положения заметок докладчика.
  3. Создайте экземпляр класса Presentation .
  4. Получите ссылку на слайд по его индексу.
  5. Сгенерируйте изображение‑миниатюру указанного слайда, используя параметры рендеринга.
  6. Сохраните изображение‑миниатюру в предпочитаемом формате изображения.
int slideIndex = 0;

RenderingOptions renderingOptions = new RenderingOptions
{
    SlidesLayoutOptions = new NotesCommentsLayoutingOptions
    {
        NotesPosition = NotesPositions.BottomTruncated
    }
};

using (Presentation presentation = new Presentation("sample.pptx"))
{
    ISlide slide = presentation.Slides[slideIndex];

    using (IImage image = slide.GetImage(renderingOptions))
    {
        image.Save("output.png", ImageFormat.Png);
    }
}

Рабочий пример

Попробуйте бесплатное приложение Aspose.Slides Viewer — чтобы увидеть, что можно реализовать с помощью API Aspose.Slides:

Online PowerPoint Viewer

FAQ

Можно ли встроить просмотрщик презентаций в веб‑приложение ASP.NET?

Да. Вы можете использовать Aspose.Slides на стороне сервера для рендеринга слайдов в виде изображений или HTML и отображать их в браузере. Навигацию и масштабирование можно реализовать с помощью JavaScript для интерактивного взаимодействия.

Как лучше всего отображать слайды в пользовательском .NET‑просмотрщике?

Рекомендуется рендерить каждый слайд как изображение (например, PNG или SVG) или конвертировать его в HTML с помощью Aspose.Slides, после чего показывать результат в элементе picture box (для настольных приложений) или в HTML‑контейнере (для веба).

Как работать с большими презентациями, содержащими много слайдов?

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