微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PHPPresentation从现有pptx创建pptx时缺少样式和内容

如何解决使用PHPPresentation从现有pptx创建pptx时缺少样式和内容

我正在使用以下代码加载pptx文件并保存到新的pptx中。我的代码很简单。但是样式在新的pptx文件中已损坏。任何人都可以帮忙吗?

<?PHP 

require_once 'vendor/autoload.PHP';

use PHPOffice\phppresentation\phppresentation;
use PHPOffice\phppresentation\IOFactory;
use PHPOffice\phppresentation\Style\Color;
use PHPOffice\phppresentation\Style\Alignment;

function createPPT($template){
   $pptLayout = new \PHPOffice\phppresentation\DocumentLayout();
   $pptLayout->setDocumentLayout($pptLayout::LAYOUT_SCREEN_16X10);
   $pptTMPL = \PHPOffice\phppresentation\IOFactory::createReader('PowerPoint2007');
    //$ppt = $pptTMPL->load("./ppt-template.pptx");
   $ppt = $pptTMPL->load("./$template");
   $ppt->setLayout($pptLayout);

   $oWriterPPTX = IOFactory::createWriter($ppt,'PowerPoint2007');
   $oWriterPPTX->save(__DIR__ . "/sample2.pptx");

}

createPPT("a.pptx","PowerPoint2007");

解决方法

每当我们使用MS Office,从php导入/导出时,我们都需要在相关代码中包含CSS文件。十多次,我们也遇到了这种问题。因此,我们需要将样式文件URL发送到相关的/被调用的文件。 检查以下修改后的代码:-

function createPPT($template)
  {

       $custom_css = "<your_url>/stye.css";

       $pptLayout = new \PhpOffice\PhpPresentation\DocumentLayout();
       $pptLayout->setDocumentLayout($pptLayout::LAYOUT_SCREEN_16X10);
       $pptTMPL = \PhpOffice\PhpPresentation\IOFactory::createReader('PowerPoint2007');
        //$ppt = $pptTMPL->load("./ppt-template.pptx");
       $ppt = $pptTMPL->load("./$template",$custom_css);
       $ppt->setLayout($pptLayout);
    
       $oWriterPPTX = IOFactory::createWriter($ppt,'PowerPoint2007');
       $oWriterPPTX->save(__DIR__ . "/sample2.pptx");
    
    }

尝试一下。 我希望这会支持您的项目。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。