Конвертировать слайды презентаций в изображения на PHP

Обзор

Aspose.Slides for PHP via Java позволяет легко преобразовывать слайды презентаций PowerPoint и OpenDocument в различные форматы изображений, включая BMP, PNG, JPG (JPEG), GIF и другие.

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

  1. Задайте нужные параметры конвертации и выберите слайды для экспорта, используя:
  2. Сгенерируйте изображение слайда, вызвав метод getImage.

В Aspose.Slides for PHP via Java интерфейс IImage представляет класс, позволяющий работать с изображениями, определёнными пиксельными данными. С помощью этого класса можно сохранять изображения в широком диапазоне форматов (BMP, JPG, PNG и т.д.).

Преобразование слайдов в битмапы и сохранение изображений в PNG

Можно преобразовать слайд в объект битмапа и использовать его напрямую в приложении. Либо преобразовать слайд в битмап и затем сохранить изображение в JPEG или любом другом предпочтительном формате.

В примере кода показано, как преобразовать первый слайд презентации в объект битмапа и затем сохранить изображение в формате PNG:

$presentation = new Presentation("Presentation.pptx");
try {
    // Преобразовать первый слайд презентации в битмап.
    $image = $presentation->getSlides()->get_Item(0)->getImage();
    try {
        // Сохранить изображение в формате PNG.
        $image->save("Slide_0.png", ImageFormat::Png);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Преобразование слайдов в изображения с пользовательскими размерами

Иногда требуется получить изображение определённого размера. Используя перегрузку метода getImage, можно преобразовать слайд в изображение с заданными шириной и высотой.

В этом примере кода показано, как это сделать:

$imageSize = new Java("java.awt.Dimension", 1820, 1040);

$presentation = new Presentation("Presentation.pptx");
try {
    // Преобразовать первый слайд презентации в битмап с указанным размером.
    $image = $presentation->getSlides()->get_Item(0)->getImage($imageSize);
    try {
        // Сохранить изображение в формате JPEG.
        $image->save("Slide_0.jpg", ImageFormat::Jpeg);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Преобразование слайдов с заметками и комментариями в изображения

Некоторые слайды могут содержать заметки и комментарии.

Aspose.Slides предоставляет два классаTiffOptions и RenderingOptions — которые позволяют управлять рендерингом слайдов презентации в изображения. Оба класса включают метод setSlidesLayoutOptions, позволяющий настроить отображение заметок и комментариев на слайде при его конвертации в изображение.

С помощью класса NotesCommentsLayoutingOptions можно задать предпочтительное положение заметок и комментариев в результирующем изображении.

В этом примере кода показано, как преобразовать слайд с заметками и комментариями:

$scaleX = 2;
$scaleY = $scaleX;

$presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
    $notesCommentsOptions = new NotesCommentsLayoutingOptions();
    $notesCommentsOptions->setNotesPosition(NotesPositions::BottomTruncated);         // Установить положение заметок.
    $notesCommentsOptions->setCommentsPosition(CommentsPositions::Right);             // Установить положение комментариев.
    $notesCommentsOptions->setCommentsAreaWidth(500);                                 // Установить ширину области комментариев.
    $notesCommentsOptions->setCommentsAreaColor(java("java.awt.Color")->LIGHT_GRAY);  // Установить цвет области комментариев.

    // Создать параметры рендеринга.
    $options = new RenderingOptions();
    $options->setSlidesLayoutOptions($notesCommentsOptions);

    // Преобразовать первый слайд презентации в изображение.
    $image = $presentation->getSlides()->get_Item(0)->getImage($options, $scaleX, $scaleY);
    try {
        // Сохранить изображение в формате GIF.
        $image->save("Image_with_notes_and_comments_0.gif", ImageFormat::Gif);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Преобразование слайдов в изображения с использованием TIFF‑опций

Класс TiffOptions предоставляет более точный контроль над результирующим TIFF‑изображением, позволяя задавать такие параметры, как размер, разрешение, цветовая палитра и др.

В этом примере кода демонстрируется процесс конвертации, при котором TIFF‑опции используются для вывода черно‑белого изображения с разрешением 300 DPI и размером 2160 × 2800:

// Загрузить файл презентации.
$presentation = new Presentation("sample.pptx");
try {
    // Получить первый слайд из презентации.
    $slide = $presentation->getSlides()->get_Item(0);

    // Настроить параметры выходного TIFF‑изображения.
    $options = new TiffOptions();
    $options->setImageSize(new Java("java.awt.Dimension", 2160, 2880));  // Установить размер изображения.
    $options->setPixelFormat(ImagePixelFormat::Format1bppIndexed);       // Установить формат пикселей (черно‑белый).
    $options->setDpiX(300);                                              // Установить горизонтальное разрешение.
    $options->setDpiY(300);                                              // Установить вертикальное разрешение.
    
    // Преобразовать слайд в изображение с указанными параметрами.
    $image = $slide->getImage($options);
    try {
        // Сохранить изображение в формате TIFF.
        $image->save("output.tiff", ImageFormat::Tiff);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Преобразование всех слайдов в изображения

Aspose.Slides позволяет преобразовать все слайды презентации в изображения, эффективно превращая всю презентацию в серию изображений.

В этом примере кода показано, как преобразовать все слайды презентации в изображения на PHP:

$scaleX = 2;
$scaleY = $scaleX;

$presentation = new Presentation("Presentation.pptx");
try {
    // Рендерировать презентацию в изображения слайд за слайдом.
    for($i = 0; $i < java_values($presentation->getSlides()->size()) ; $i++) {
        // Контролировать скрытые слайды (не рендерить скрытые слайды).
        if (java_values($presentation->getSlides()->get_Item($i)->getHidden())) {
            continue;
        }

        // Преобразовать слайд в изображение.
        $image = $presentation->getSlides()->get_Item($i)->getImage($scaleX, $scaleY);
        try {
            // Сохранить изображение в формате JPEG.
            $image->save("Slide_" . $i . ".jpg", ImageFormat::Jpeg);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

FAQ

Поддерживает ли Aspose.Slides рендеринг слайдов с анимацией?

Нет, метод getImage сохраняет только статическое изображение слайда без анимации.

Можно ли экспортировать скрытые слайды как изображения?

Да, скрытые слайды могут обрабатываться так же, как обычные. Просто убедитесь, что они включены в цикл обработки.

Можно ли сохранять изображения с тенями и эффектами?

Да, Aspose.Slides поддерживает рендеринг теней, прозрачности и других графических эффектов при сохранении слайдов в виде изображений.