Office関連

PHPPresentationを使ってPHPからPowerPointファイルを出力してみる。

久しぶりにPHPOfficeを覗いてみたら「PHPPresentation」(LGPL v3ライセンス)が更新されているようだったので、さっそく使ってみました。

PHPPresentationのインストール

PHPPresentationも、PhpSpreadsheetPHPWordと同じく「composer install」するだけで導入できます。

composer.json
{
    "require": {
       "phpoffice/phppresentation": "dev-master"
    }
}

PHPPresentationの呼び出し

インストールが終わったら、さっそくPHPPresentationを使ってPowerPointファイルを作成してみます。

<?php
    require_once './vendor/autoload.php';
    
    use PhpOffice\PhpPresentation\PhpPresentation;
    use PhpOffice\PhpPresentation\IOFactory;
    use PhpOffice\PhpPresentation\Style\Color;
    use PhpOffice\PhpPresentation\Style\Alignment;
    
    //新規プレゼンテーション作成
    $phpPres = new PhpPresentation();
    
    //ドキュメントのプロパティ設定
    $phpPres->getDocumentProperties()
        ->setCreator('@kinuasa')
        ->setCompany('初心者備忘録')
        ->setTitle('PHPPresentation Sample')
        ->setDescription('PHPPresentationのサンプルです。');
    
    //図形(テキスト)追加
    $slide = $phpPres->getActiveSlide();
    $shape = $slide->createRichTextShape()
        ->setHeight(300)
        ->setWidth(600)
        ->setOffsetX(170)
        ->setOffsetY(180);
    $shape->getActiveParagraph()
        ->getAlignment()
        ->setHorizontal(Alignment::HORIZONTAL_CENTER);
    $textRun = $shape->createTextRun('こんにちは、世界!');
    $textRun->getFont()
        ->setName('MS Pゴシック')
        ->setBold(true)
        ->setSize(48)
        ->setColor(new Color('8e44ad'));
    
    //ファイルダウンロード
    //MIMEタイプ:https://technet.microsoft.com/ja-jp/ee309278.aspx
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename*=utf-8\'\'' . rawurlencode('サンプル.pptx'));
    header('Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation');
    header('Content-Transfer-Encoding: binary');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Expires: 0');
    $xmlWriter = IOFactory::createWriter($phpPres, 'PowerPoint2007');
    ob_end_clean(); //バッファ消去
    $xmlWriter->save('php://output');

上記コードを実行すると、下図のようなファイルが出力されます。

日本語表示も問題ありません。
ただ、リファレンスによれば下記コードで既存ファイルが読み込めるはずなのですが、私が試した限りでは、既存ファイルを元にファイル作成すると、ファイルが破損して上手くいきませんでした。

$oReader = IOFactory::createReader('PowerPoint2007');
$oReader->load(__DIR__ . '/sample.pptx');

このあたりはまだ発展途上といった感じがしますが、使い勝手は良く、直感的に扱えるので、PHPでPowerPointファイルを出力する際には役立つライブラリだと思います。

Nintendo Switch「スナックワールド トレジャラーズ ゴールド」に3DS版からデータ引継ぎはできるの?前のページ

【ワールドネバーランド】Switchでまったり箱庭ゲーム!次のページ

関連記事

  1. Office関連

    ビジネスITアカデミーの無料VBAセミナーに行ってきました。

    Excel MVPの伊藤さんやWord MVPの新田さんのブログ記事で…

  2. Office関連

    Microsoft Translator APIで文字列を翻訳するVBAマクロ

    以前書いた記事で、Google翻訳を使って文字列を翻訳するマクロを紹介…

  3. アイコン一覧

    Office 2013 アイコン一覧(V)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    64ビット版OfficeでURLエンコード処理ができない?

    2011/12/28 追記:関連記事として「文字コードを指定してU…

  5. Office関連

    [Office 2016]コマンド検索即実行、便利な「Tell Me」機能

    ※ 下記情報はOffice 2016 Preview版を元にしています…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP