Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

olepowerpoint.pl



竹迫です。

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>