簡體   English   中英

使用 PHPPresentation 從現有 pptx 創建 pptx 時缺少樣式和內容

[英]Style & content is missing in when create pptx from existing pptx using PHPPresentation

我正在使用下面的代碼來加載一個 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 文件。 超過 10 次我們也遇到過這種問題。 所以我們需要將樣式文件 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");
    
    }

嘗試這個。 我希望這會支持你的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM