Namazu-win32-users-ja(旧)


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

Re: Namazu 2.0.5 for Win32 パッチのまとめ



 From: Mitsuo Satou <satou@xxxxxxxxxxxxxx>
 Subject: [namazu-win32-users-ja] Namazu 2.0.5 for Win32 パッチのまとめ
 Date: Wed, 03 Jan 2001 15:33:21 +0900

 > Perlの勉強がてらmknmz、olepowerpoint.plのパッチを作成したのでMLに
 > 流しておきます。あと、olemsword.pl、oleexcel.plのパッチも再掲載
 > しておきます。

ありがとうございます。olemsword.pl, oleexcel.pl, olepowerpoint.pl 
は CVS tree に commit しておきました。

  http://cvs.namazu.org/namazu/filter/win32/

から最新版を取ってこれます。これでお試し頂けないでしょうか?
C:\namazu\share\namazu\filter\win32\ 以下にコピーするだけで確認で
きるはずです。

上のURLをご覧になればわかりますが、CVSリポジトリ内には、竹迫さんが 
namazu-users-ja 907 でおっしゃっていた olertf.pl も追加してありま
す。それに、olertf.pl の類推から、oleichitaro[45678].pl というのを
作ってテストスイートのファイル(*)をインデックスしてみたところ、
JSTXT 無しでも一太郎4,5,6,7,8 はインデックスできるようです。

(*) http://cvs.namazu.org/namazu/tests/data/ 以下。
  
Windows95 OSR2, ActivePerl-5.6.0.620, Office 97, namazu-2.0.5 とい
う環境で手元ではとりあえず動きましたが、なんせ Windows は良くわか
らんので、どなたか試してみていただけないでしょうか。
# Ver 4,5,6 では、インデックスの際に「一太郎 Ver. 4/dash 文書コン
# バータ」のような確認ウィンドウが出てきますが。


たぶん、竹迫さんがおっしゃったように、OASYS や IBM DOS文書でも、あ
るいはExcelで読めるLotus1-2-3なども、OLEフィルタが作れそうです。良
く分かってませんが、Windows ヘルプファイルも作れるんじゃないかとい
う気はします。ただ、フィルタを追加することは難しくないのですが、テ
ストスイート用データを作れる環境がこちらにはありません。


 > ■mknmz のパッチ

これは迷ったのでまだ当てていません。当ててよさそうではありますが。


 > ■oleexcel.pl のパッチ
 >   ・128行
 >    タイトルにファイル名が入るように""を外した。

他のフィルタの BuiltInDocumentProperties のものも同じなので、全部
外しました。それより、getProperties() での

    # get Title
    $fields->{'title'} = $cfile->BuiltInDocumentProperties(1)->{Value}
      unless $cfile->BuiltInDocumentProperties(1)->{Value};            # title
    $fields->{'author'} = $cfile->BuiltInDocumentProperties(7)->{Value}
      unless $cfile->BuiltInDocumentProperties(7)->{Value};            # lastauthor
    $fields->{'date'} = $cfile->BuiltInDocumentProperties(12)->{Value}
      unless $cfile->BuiltInDocumentProperties(12)->{Value};            # editdate

のような 1,7,12 のような番号依存は(上はolemsword.plのものですが)、
もう少しなんとかならないのでしょうか。最初、olertf.pl でやってみよ
うとしたら、

Win32::OLE(0.1101) error 0x80020009: "例外が発生しました。"
    in METHOD/PROPERTYGET "Value" at C:/namazu/share/namazu/filter/olemsword.pl

のようなエラーになりました。これは、たぶん番号がないからですよね?
時刻抽出の部分をコメントアウトしてやってなんとか動かしました。
# 時刻はタイムスタンプでも抽出するから上の行はなくても大丈夫かと。


 >    'Password' => 'dummy password' で対象の .xls ファイルに読み取り
 >    パスワードを付けていた場合、確認ダイアログ無しでスキップさせる。

Windows95 + Excel97 ではこのダミーパスワードの行を削らないと動きま
せんでした。よくわかりませんが、OLE のバージョンの違いでしょうか?


 >   ・211〜217行
 >    シートのセル使用範囲が高さ、幅のどちらかが100を越えた場合、セル
 >    使用範囲の開始位置(左上)はそのままで、使用範囲が100を越えた
 >    部分に対し、強制的に範囲を100に制限します。

これはとりあえずコード中に 100x100 であることをコメントにしときま
した。いずれ野首さんが mknmzrc に追い出して下さることでしょう。


 > ----------------------------------------------------------------------
 > ■olepowerpoint.pl のパッチ

Windows95 + PowerPoint97 では、154 行目付近で、

-    $ppt = Win32::OLE->new('PowerPoint.Application', sub {$_[0]->Quit(0);})
+    $ppt = Win32::OLE->new('PowerPoint.Application', sub {$_[0]->Quit;})

としないといけませんでした。そして、

 >   ・181行
 >    表示しているPowerPointを[ファイル−終了]と同じ動作で閉じる。

は不要でした。


 >   ・PowerPoint97でテストした結果、WordやExcelのようにPowerPointを
 >    非表示のまま処理することはできない。必ず表示しないとOLEオート
 >    メーション処理に失敗する。多分PowerPointの仕様でしょう。

# ふむ。なんだかなあ、な仕様ですねえ。
--
馬場  肇 ( Hajime BABA )            E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士後期課程
--