0

我正在使用下面的代码来加载一个 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");
4

1 回答 1

1

每当我们使用 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");
    
    }

尝试这个。我希望这将支持你的项目。

于 2020-08-31T05:41:57.803 回答