Я попытался установить библиотеку phppresentation в рамках codeigniter. Но в codeigniter не может использовать пространство имен. Так как интегрировать?
Вероятно, это не лучший пример, но я получил пример «Приступая к работе» на PHPPresentation Packagist page работать в КИ 3.1.3.
Я использую способ по умолчанию использовать composer, как описано в руководстве по CI.
Директории приложений и системы находятся на одном уровне выше корневого каталога.
Файл composer.json находится в каталоге приложения.
Вырезал из страницы упаковщика ниже в composer.json и запустил composer update
который сохранил его в приложение / vendor / phpoffice.
{
"require": {
"phpoffice/phppresentation": "dev-master"}
}
В приложении / библиотеках созданы Ppt_stuff.php
, Cut-n-Pasted Пример начала работы в файл. Пришлось добавить имя класса и функцию make_ppt. Также исправлены имена путей функций setPath и Save с realpath('.')
,
<?php defined('BASEPATH') OR exit('No direct script access allowed');
use PhpOffice\PhpPresentation\PhpPresentation;
use PhpOffice\PhpPresentation\IOFactory;
use PhpOffice\PhpPresentation\Style\Color;
use PhpOffice\PhpPresentation\Style\Alignment;
class Ppt_stuff {
public function make_ppt() {
$objPHPPowerPoint = new PhpPresentation();
// Create slide
$currentSlide = $objPHPPowerPoint->getActiveSlide();
// Create a shape (drawing)
$shape = $currentSlide->createDrawingShape();
$shape->setName('PHPPresentation logo')
->setDescription('PHPPresentation logo')
->setPath(realpath('.') . '/../application/vendor/phpoffice/phppresentation/samples/resources/phppowerpoint_logo.gif')
->setHeight(36)
->setOffsetX(10)
->setOffsetY(10);
$shape->getShadow()->setVisible(true)
->setDirection(45)
->setDistance(10);
// Create a shape (text)
$shape = $currentSlide->createRichTextShape()
->setHeight(300)
->setWidth(600)
->setOffsetX(170)
->setOffsetY(180);
$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$textRun = $shape->createTextRun('Thank you for using PHPPresentation!');
$textRun->getFont()->setBold(true)
->setSize(60)
->setColor(new Color('FFE06B20'));
$oWriterPPTX = IOFactory::createWriter($objPHPPowerPoint, 'PowerPoint2007');
$oWriterPPTX->save(realpath('.') . "/downloads/sample.pptx");
$oWriterODP = IOFactory::createWriter($objPHPPowerPoint, 'ODPresentation');
$oWriterODP->save(realpath('.') . "/downloads/sample.odp");
}
}
В корневом каталоге создан каталог / downloads.
Добавил это в контроллер Home.
public function use_presentation() {
// load library
$this->load->library('Ppt_stuff');
// call make_ppt
$this->ppt_stuff->make_ppt();
return;
}
Пошел в HTTP: // локальный / дом / use_presentation и он создал sample.pptx и sample.odp в / downloads.
Когда я их открыл, Powerpoint 2010 жаловался и предлагал их починить.
Других решений пока нет …