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

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

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 ...
トップへ戻る