PHP PowerPointの全てのスライドをjpeg画像で出力

PHP PowerPoint
2014/01/23

PHPでPowerPointを操作

概要

当記事では、PHPでPowerPointを読み込み、全てのスライドをjpeg画像で出力する方法を掲載しています。

PHPでExcelを操作するライブラリは多くありますが、PowerPointは少ないですね。
本当はLinuxのサーバーで行いたかったのですが、難しそうなのでWindowsサーバーにしました。

今回は、COMクラスを使用して行うので、Windowsサーバー上での話となります。

サンプルコード

COMクラスの設定

COM オブジェクトのインスタンスを作成してPowerPointのライブラリを利用します。
COMクラスを利用できるように、php.ini に以下を記述します。


extension=php_com_dotnet.dll

PHPで出力処理

環境
OS : Windows 7
php : 5.4.22
PowerPoint 2010

ちなみに、Apacheをサービス起動していると、正常に動作しないようです。
Apacheを実行したセッションのデスクトップが必要なようです。

下記では、hoge.pptxの全てのスライドをjpegで出力しています。


$file_name = 'hoge.pptx';
$ppt_app = new COM('PowerPoint.Application');
$ppt_app->Visible = true;	//起動(不要)

$presentation = $ppt_app->Presentations->Open(realpath($file_name));	//読込
$slide_count = $presentation->Slides->Count;

for($i=1;$i<=$slide_count;$i++) {
	$presentation->Slides[$i]->Export('/' . $i . '.jpg', "jpg", 1024,768);	//出力
}

$presentation->Close();
$ppt_app->Quit();

「$presentation->Close();」では、開いたファイルを閉じています。
「$ppt_app->Quit();」では、PowerPointを終了しています。

上記の方法では、複数ブラウザから一度にアクセスして処理した場合、競合してしまいエラーとなります。
それを解決するには、「$presentation->Close();」、「$ppt_app->Quit();」をしないことです。
また、Openの第二引数を true に指定して読み取り専用で開くようにしましょう。

このようにすると、サーバー上でひたすらPowerPointが開かれていくので、どこかのタイミングで下記のようにしてPowerPointを全て閉じます。


$ppt_app = new COM('PowerPoint.Application');
$ppt_app->Quit();

他に良い方法あれば教えてください。

  • このエントリーをはてなブックマークに追加
Related

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る