Эффективное объединение презентаций в PHP
Объединение презентаций
Когда вы объединяете одну презентацию с другой, вы фактически комбинируете их слайды в одну презентацию, получая один файл.
Info
Большинство программ для презентаций (PowerPoint или OpenOffice) не имеют функций, позволяющих пользователям комбинировать презентации таким образом.
Aspose.Slides for PHP via Java, однако позволяет объединять презентации различными способами. Вы можете объединять презентации со всеми их фигурами, стилями, текстами, форматированием, комментариями, анимациями и т.д., не беспокоясь о потере качества или данных.
Смотрите также
Что можно объединять
С помощью Aspose.Slides вы можете объединять
- целые презентации. Все слайды из презентаций попадают в одну презентацию
- отдельные слайды. Выбранные слайды попадают в одну презентацию
- презентации в одном формате (PPT в PPT, PPTX в PPTX и т.д.) и в разных форматах (PPT в PPTX, PPTX в ODP и т.д.) друг с другом.
Note
Помимо презентаций, Aspose.Slides позволяет объединять другие файлы:
- Изображения, такие как JPG в JPG или PNG в PNG
- Документы, такие как PDF в PDF или HTML в HTML
- И два разных файла, такие как image to PDF JPG в PDF или TIFF в PDF.
Параметры объединения
Вы можете задать параметры, определяющие, будет ли
- каждый слайд в результирующей презентации сохраняет уникальный стиль
- для всех слайдов в результирующей презентации используется один и тот же стиль.
Для объединения презентаций Aspose.Slides предоставляет методы addClone (из класса SlideCollection). Существует несколько реализаций методов addClone, определяющих параметры процесса объединения презентаций. Каждый объект Presentation имеет коллекцию slide, поэтому вы можете вызвать метод addClone у презентации, в которую хотите добавить слайды.
addClone возвращает объект Slide, который является клоном исходного слайда. Слайды в результирующей презентации являются простым копированием слайдов из исходной презентации. Поэтому вы можете изменять полученные слайды (например, применять стили, параметры форматирования или макеты), не опасаясь, что исходные презентации пострадают.
Объединить презентации
Aspose.Slides предоставляет метод addClone(Slide), который позволяет комбинировать слайды, при этом слайды сохраняют свои макеты и стили (параметры по умолчанию).
Этот код PHP показывает, как объединить презентации:
$pres1 = new Presentation("pres1.pptx");
try {
$pres2 = new Presentation("pres2.pptx");
try {
foreach($pres2->getSlides() as $slide) {
$pres1->getSlides()->addClone($slide);
}
} finally {
if (!java_is_null($pres2)) {
$pres2->dispose();
}
}
$pres1->save("combined.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres1)) {
$pres1->dispose();
}
}
Объединить презентации с мастером слайдов
Aspose.Slides предоставляет метод addClone(Slide, MasterSlide, boolean), который позволяет объединять слайды, применяя шаблон презентации мастера слайдов. Таким образом, при необходимости вы можете изменить стиль слайдов в результирующей презентации.
Этот код демонстрирует описанную операцию:
$pres1 = new Presentation("pres1.pptx");
try {
$pres2 = new Presentation("pres2.pptx");
try {
foreach($pres2->getSlides() as $slide) {
$pres1->getSlides()->addClone($slide, $pres2->getMasters()->get_Item(0), true);
}
} finally {
if (!java_is_null($pres2)) {
$pres2->dispose();
}
}
$pres1->save("combined.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres1)) {
$pres1->dispose();
}
}
Note
Макет слайда для мастера слайдов определяется автоматически. Когда подходящий макет нельзя определить, если булевый параметрallowCloneMissingLayout метода addClone установлен в true, используется макет исходного слайда. В противном случае будет выброшено исключение PptxEditException.
Если вы хотите, чтобы слайды в результирующей презентации имели иной макет слайда, используйте метод addClone(Slide, LayoutSlide) при объединении.
Объединить отдельные слайды из презентаций
Объединение отдельных слайдов из нескольких презентаций полезно для создания пользовательских наборов слайдов. Aspose.Slides for PHP via Java позволяет выбирать и импортировать только нужные вам слайды. API сохраняет форматирование, макет и дизайн исходных слайдов.
Следующий код PHP создает новую презентацию, добавляет титульные слайды из двух других презентаций и сохраняет результат в файл:
function getTitleSlide(Presentation $presentation) {
for ($i = 0; $i < java_values($presentation->getSlides()->size()); $i++) {
$slide = $presentation->getSlides()->get_Item($i);
if (java_values($slide->getLayoutSlide()->getLayoutType()) === SlideLayoutType::Title) {
return $slide;
}
}
return null;
}
$presentation = new Presentation();
$presentation1 = new Presentation($folderPath . "presentation1.pptx");
$presentation2 = new Presentation($folderPath . "presentation2.pptx");
try {
$presentation->getSlides()->removeAt(0);
$slide1 = getTitleSlide($presentation1);
if ($slide1 != null)
$presentation->getSlides()->addClone($slide1);
$slide2 = getTitleSlide($presentation2);
if ($slide2 != null)
$presentation->getSlides()->addClone($slide2);
$presentation->save($folderPath . "combined.pptx", SaveFormat::Pptx);
} finally {
$presentation2->dispose();
$presentation1->dispose();
$presentation->dispose();
}
Объединить презентации с макетом слайда
Этот код PHP показывает, как комбинировать слайды из презентаций, применяя к ним выбранный вами макет слайда, чтобы получить одну результирующую презентацию:
$pres1 = new Presentation("pres1.pptx");
try {
$pres2 = new Presentation("pres2.pptx");
try {
foreach($pres2->getSlides() as $slide) {
$pres1->getSlides()->addClone($slide, $pres2->getLayoutSlides()->get_Item(0));
}
} finally {
if (!java_is_null($pres2)) {
$pres2->dispose();
}
}
$pres1->save("combined.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres1)) {
$pres1->dispose();
}
}
Объединить презентации с разными размерами слайдов
Note
Нельзя объединять презентации с разными размерами слайдов.Чтобы объединить 2 презентации с разными размерами слайдов, необходимо изменить размер одной из презентаций, чтобы его размер соответствовал размеру другой презентации.
Этот пример кода демонстрирует описанную операцию:
$pres1 = new Presentation("pres1.pptx");
try {
$pres2 = new Presentation("pres2.pptx");
try {
$pres2->getSlideSize()->setSize($pres1->getSlideSize()->getSize()->getWidth(), $pres1->getSlideSize()->getSize()->getHeight(), SlideSizeScaleType::EnsureFit);
foreach($pres2->getSlides() as $slide) {
$pres1->getSlides()->addClone($slide);
}
} finally {
if (!java_is_null($pres2)) {
$pres2->dispose();
}
}
$pres1->save("combined.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres1)) {
$pres1->dispose();
}
}
Объединить слайды в раздел презентации
Этот код PHP показывает, как объединить определенный слайд в раздел презентации:
$pres1 = new Presentation("pres1.pptx");
try {
$pres2 = new Presentation("pres2.pptx");
try {
foreach($pres2->getSlides() as $slide) {
$pres1->getSlides()->addClone($slide, $pres1->getSections()->get_Item(0));
}
} finally {
if (!java_is_null($pres2)) {
$pres2->dispose();
}
}
$pres1->save("combined.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres1)) {
$pres1->dispose();
}
}
Слайд добавляется в конец раздела.
Смотрите также
Aspose предоставляет БЕСПЛАТНЫЙ Онлайн Сервис Коллажей. Используя этот онлайн‑сервис, вы можете объединять JPG в JPG или PNG в PNG изображения, создавать фото сетки и многое другое.
Посмотрите Aspose БЕСПЛАТНЫЙ Онлайн Объединитель. Он позволяет объединять презентации PowerPoint в одинаковом формате (например, PPT в PPT, PPTX в PPTX) или между разными форматами (например, PPT в PPTX, PPTX в ODP).
FAQ
Есть ли ограничения на количество слайдов при объединении презентаций?
Нет строгих ограничений. Aspose.Slides может работать с большими файлами, однако производительность зависит от размера и ресурсов системы. Для очень больших презентаций рекомендуется использовать 64‑разрядную JVM и выделять достаточный объём памяти heap.
Можно ли объединять презентации с вложенными видео или аудио?
Да, Aspose.Slides сохраняет мультимедийный контент, встроенный в слайды, однако итоговая презентация может стать значительно больше.
Будут ли шрифты сохранены при объединении презентаций?
Да. Шрифты, используемые в исходных презентациях, сохраняются в результирующем файле, при условии, что они установлены в системе или встроены.
