Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
olepowerpoint.pl
- From: "Yoshinori.TAKESAKO" <takesako@xxxxxxxxx>
- Date: Sat, 26 Aug 2000 23:08:41 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 00334
竹迫です。
Namazu 2.0.4 for Win32 の OLE filter を用いて、
PowerPoint の文書をインデックスの対象に含めることが
できましたので、私の方法をご報告いたします。
[動作環境]
Microsoft Windows NT4.0SP5
Microsoft Office 2000 標準インストール
ActivePerl 5.00503 (build 522)
filter/win32/olepowerpoint.pl のファイルに以下の変更を加えました。
1. mediatype() の変更
File::MMagic 1.21 で、うまく application/powerpoint のタイプが
返されていなかったので、application/ms-powerpoint のタイプを
受け付けるようにしました。
2. "Microsoft Office 9.0 Object Library" への変更
Office 2000 の Constant を読み込むように文字列を変更しました。
3. レキシカルスコープの変更
getSlidesサブルーチン内で、変数 $allText に対するレキシカル
スコープの挙動がおかしかったので、直してみました。
[filter/win32/olepowerpoint.pl の変更点]
----(ここから)----
51c51
< return ('application/powerpoint');
---
> return ('application/ms-powerpoint');
164c164
< $office_consts = Win32::OLE::Const->Load("Microsoft Office 8.0 Object Library");
---
> $office_consts = Win32::OLE::Const->Load("Microsoft Office 9.0 Object Library");
188,189c188,189
< $allText .= $obj->Header->{Text} if ( $obj->{Header} && $obj->Header->{Text} ) ;
< $allText .= $obj->Footer->{Text} if ( $obj->{Footer} && $obj->Footer->{Text} ) ;
---
> $getSlides::allText .= $obj->Header->{Text} if ( $obj->{Header} && $obj->Header->{Text} ) ;
> $getSlides::allText .= $obj->Footer->{Text} if ( $obj->{Footer} && $obj->Footer->{Text} ) ;
198,199c198,199
< $getShapes::allText .= $p;
< $getShapes::allText .= "\n";
---
> $getSlides::allText .= $p;
> $getSlides::allText .= "\n";
212c212
< return $allText;
---
> return $getSlides::allText;
----(ここまで)----
OLE なのでテキスト抽出時にちょっと時間はかかりますが、
PowerPoint 95/97/98/2000 の文書を検索対象に含めることが
できたので満足しています。
OLE filter 開発者の方への感謝の意を込めて、
メーリングリストへフィードバックさせていただきます。
# いや〜。Namazuって本当に素晴らしいですね。(^^)
--
広島市立大学 情報科学部 情報機械システム工学科
竹迫 良範 <takesako@xxxxxxxxx>