Файл PHPPresentation с 2 слайдами требует ремонта

Я работаю над сценарием для создания презентации с несколькими слайдами. Когда я добавляю первый слайд, скрипт работает нормально.

$colorBlack = new Color('FF000000');


$objPHPPresentation = new PhpPresentation();

$objPHPPresentation->getDocumentProperties()->setCreator('PHPOffice')
    ->setLastModifiedBy('PHPPresentation Team')
    ->setTitle('Sample 01 Title')
    ->setSubject('Sample 01 Subject')
    ->setDescription('Sample 01 Description')
    ->setKeywords('office 2007 openxml libreoffice odt php')
    ->setCategory('Sample Category');

$objPHPPresentation->removeSlideByIndex(0);

$currentSlide = createTemplatedSlide($objPHPPresentation); 

$shape = $currentSlide->createRichTextShape(); $shape->setHeight(200);    
$shape->setWidth(600); $shape->setOffsetX(10); $shape->setOffsetY(400); 
$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);

$textRun = $shape->createTextRun('slide 1 text 1'); 
$textRun->getFont()->setBold(true); 
$textRun->getFont()->setSize(28); 
$textRun->getFont()->setColor($colorBlack); $shape->createBreak();

$textRun = $shape->createTextRun('slide 1 text 2'); 
$textRun->getFont()->setBold(true); 
$textRun->getFont()->setSize(60); 
$textRun->getFont()->setColor($colorBlack);

Таким образом, приведенный выше код работает нормально. Затем, когда я добавляю код для второго слайда, я получаю сообщение об ошибке при открытии в PowerPoint, указывающее на наличие проблемы с содержимым и необходимость исправления файла.

Вот код, который я добавляю для второго слайда. По сути, это копия предыдущего слайда.

$currentSlide = createTemplatedSlide($objPHPPresentation); 

$shape = $currentSlide->createRichTextShape(); 
$shape->setHeight(200); 
$shape->setWidth(600); 
$shape->setOffsetX(10); 
$shape->setOffsetY(400); 
$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);

$textRun = $shape->createTextRun('second slide text 1'); 
$textRun->getFont()->setBold(true); 
$textRun->getFont()->setSize(28); 
$textRun->getFont()->setColor($colorBlack); $shape->createBreak();

$textRun = $shape->createTextRun('second slide text 2'); 
$textRun->getFont()->setBold(true); 
$textRun->getFont()->setSize(60); 
$textRun->getFont()->setColor($colorBlack);

person user2332467    schedule 10.10.2016    source источник


Ответы (1)


Я узнал об этом на другом форуме. Скопируйте макет.

$objPHPPresentation = new PhpPresentation();
$oMasterSlide = $objPHPPresentation->getAllMasterSlides()[0];
$oSlideLayout = $oMasterSlide->getAllSlideLayouts()[0];

Затем скопируйте макет на каждый новый слайд:

$currentSlide->setSlideLayout($oSlideLayout);
person user2332467    schedule 15.10.2016
comment
Привет, я пытаюсь это сделать, но у меня нет доступного метода getAllMasterSlides. Какую версию PhpPresentation вы используете? - person Óscar Gómez Alcañiz; 16.11.2016