Мне было трудно выполнить sh простую задачу:
Я создаю несколько слайдов, которые должны содержать только текст, который должен быть автоматически изменен для соответствия слайду. Я создаю презентацию и устанавливаю LAYOUT_SCREEN_4X3
$presentation = new PhpPresentation();
$presentation->getLayout()->setDocumentLayout(LAYOUT_SCREEN_4X3, true);
. Затем я генерирую слайды в al oop, для каждого слайда создаю createRichTextShape, затем абзац и несколько createTextRun внутри абзаца.
Проблема в том, что результирующий абзац не покрывает весь слайд и, следовательно, не изменяет размер внутреннего текста, который выходит за его пределы. Изменяя сгенерированный ppt в powerpoint и просто изменяя размер абзаца, чтобы он помещался на весь слайд, он оборачивает весь текст внутри него и корректно изменяет его размер.
$currentSlide = $presentation->createSlide();
$currentSlide->setName("Slide name");
$shape = $currentSlide->createRichTextShape()
->setHeight(400) //problem here? how can i know the right height for LAYOUT_SCREEN_4X3
->setWidth(600) //problem here? how can i know the right width for LAYOUT_SCREEN_4X3
->setOffsetX(40)
->setOffsetY(40)
->setHorizontalOverflow(RichText::OVERFLOW_CLIP)
->setVerticalOverflow(RichText::OVERFLOW_CLIP)
->setWrap(RichText::WRAP_SQUARE);
$shape->createParagraph(); // How can i set the paragraph size to fill the slide and wrap all createTextRus inside it?
$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
$textRun = $shape->getActiveParagraph()->createTextRun("TEXT HERE");
$textRun->getFont()->setSize(14);
$shape->getActiveParagraph()->createBreak();
$textRun = $shape->getActiveParagraph()->createTextRun("TEXT 2 HERE"); // N repeated textruns will be present;