PHPPresentation Создать слайд и абзац, которые соответствуют документу - PullRequest
0 голосов
/ 20 марта 2020

Мне было трудно выполнить 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;
...