Конвертировать слайды презентаций в изображения на PHP
Обзор
Aspose.Slides for PHP via Java позволяет легко преобразовывать слайды презентаций PowerPoint и OpenDocument в различные форматы изображений, включая BMP, PNG, JPG (JPEG), GIF и другие.
Чтобы преобразовать слайд в изображение, выполните следующие действия:
- Задайте нужные параметры конвертации и выберите слайды для экспорта, используя:
- класс TiffOptions, or
- класс RenderingOptions.
- Сгенерируйте изображение слайда, вызвав метод 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();
}
Note
В любом процессе конвертации слайдов в изображения метод setNotesPosition не может применитьBottomFull (для указания положения заметок), поскольку текст заметки может быть слишком большим и не вписаться в заданный размер изображения.
Преобразование слайдов в изображения с использованием 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();
}
Note
Поддержка TIFF не гарантируется в версиях JDK 9 и ниже.Преобразование всех слайдов в изображения
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 поддерживает рендеринг теней, прозрачности и других графических эффектов при сохранении слайдов в виде изображений.