如何解决使用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 举报,一经查实,本站将立刻删除。