public function generatePresentationAction()
{
$presentation = new PhpPresentation();
$productName = "NewProduct";
$sku = "Test01";
$templatePath = '/home/pim_svc/b.pptx';
$templatePresentation = IOFactory::createReader('PowerPoint2007')->load($templatePath);
$masterSlides = $templatePresentation->getAllMasterSlides();
foreach ($masterSlides as $masterSlide) {
$slideLayouts = $masterSlide->getAllSlideLayouts();
foreach ($slideLayouts as $slideLayout) {
$slide = new Slide();
$slide->setShapeCollection($slideLayout->getShapeCollection());
$presentation->addSlide($slide);
$shapes = $slide->getShapeCollection();
foreach ($shapes as $shape) {
if ($shape instanceof RichText) {
$text = $shape->getPlainText();
if (stripos($text, 'PRODUCTNAME')!== false) {
$shape->getActiveParagraph()->getRichTextElements()[0]->setText(str_replace('PRODUCTNAME', $productName, $text));
}
// if (stripos($text, 'SKU')!== false) {
// $shape->getActiveParagraph()->getRichTextElements()[0]->setText(str_replace('SKU', $sku, $text));
// }
}
}
}
}
$filename = "newOutPUT".'.pptx';
// $tmpFilename = sys_get_temp_dir(). '/'. $filename;
$writer = IOFactory::createWriter($presentation, 'PowerPoint2007');
$writer->save($filename);
$response = new BinaryFileResponse($tmpFilename);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
return $response;
}
For your reference my code above, I am trying to generate a PPT file based on a sample template with placeholders, but I am getting an error: "Call to a member function getIndex() on null." How can I fix this? Can anyone help me resolve this issue?
For your reference my code above, I am trying to generate a PPT file based on a sample template with placeholders, but I am getting an error: "Call to a member function getIndex() on null." How can I fix this? Can anyone help me resolve this issue?
b.pptx b.pptx