Namazu-devel-ja(旧)


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

ole フィルタ修正<<第一弾>>



寺西です。

ole フィルタ修正<<第一弾>>

とりあえず ole フィルタの修正第一弾として、以下の内容を修正しました。
修正箇所が多いので差分ではなく、ファイル自体をアーカイブしました。

現在のところ Office 未インストール環境、Office 2000,XP(2002),2003 
インストール環境でテストを行いました。
(他に Office 97 SP1 環境でのテストもしたいと思っています。)

テストを行っていただける方がいらっしゃいましたら、安全のため、予め
文書ファイルのバックアップを取った上で、テストを行ってください。

以下、特に断りのない限り、一太郎ファイル、RTF ファイルを含めて、Word 
ファイルとして説明します。 

[修正内容]

・マクロのセキュリティ レベルを高に設定した上で、ファイルをオープン
  するように変更しました。信頼のおける発行元のマクロだけが実行されます。
  Office XP(2002) 以降対象。

・$orig_cfile ファイルを直接開いている部分を $cont の内容をテンポラリ
  ファイルに一旦落とした上で、それを開くように修正しました。
  (多段フィルタでの利用を考慮)

・Word, Excel が立ち上がっている状態でも、mknmz 用の Word, Excel を
 裏で立ち上げることで影響を与えないようにしました。

  これにより次の問題が回避されます。
  - mknmz 終了時に実行前に開いていた Word, Excel を閉じないように
    しました。
  - mknmz 実行前に Word が開いていると、Word ファイルの処理が見える
    問題を回避しました。
  - mknmz を同時に複数実行した場合、Word ファイルが複数開き、
    ダイアログが表示される問題があったが、これを回避しました。
 - mknmz 実行中、Word, Excel を新規で開くことができなかった問題を
    回避しました。(ただし、mknmz 実行中は使用しないことをお勧め
    します。)
    pltests/alltests.pl を 2箇所で同時実行して確認しました。
  - PowerPoint 2000, XP(2002) は従来より問題ありません。
  PowerPoint 2003 は、開いていたファイルは閉じます。

・$field{} の EUC-JP 文字を normalize するように修正しました。

・post_codeconv() で EUC-JP に変換するのをやめ、内部で 
 codeconv::toeuc() により EUC-JP に変換するように変更しました。
  これは gfilter::line_adjust_filter() が EUC-JP を前提にしている
  ためです。

・die() を大幅に削除し、できる限り処理途中に終了しないようにしました。
 

[既知の問題]

・Ctrl + C 等で mknmz を強制終了した場合、OLE アプリケーションの
  プロセスは残ったままになります。
 (END ブロックが呼び出されないためのようです。)
・Office 97 SP1 以降を対象としたいが、Service Pack のバージョン
  を確認する手段がないので、チェックを行っていません。
  (Win32 API を使えば可能なのだが...。)
・PowerPoint XP(2002) 以降のパスワード付きファイルには対応して
  いません。
 PowerPoint XP(2002) 以降では、パスワードを尋ねるダイアログが表示
  されます。(それ以前のバージョンでは、ダイアログは表示されません。)
・文書コンバータがインストールされているかどうかのチェックを
  していません。(次期修正では対応したいと思います。)
  文書コンバータがインストールされていないと、テキストの取り出し
  が正しく行われません。
・一太郎4/dash 文書コンバータは、ダイアログを必ず出します。
・Office 2000 では、mknmz を複数実行した場合、olepowerpoint.pl 
 が競合を起こします。同時実行は避けてください。


[未確認/未処理事項]

・Office 97 SP1で問題ないかを確認したいと思います。
・--checkpoint のテストは行っていません。
・ダイアログがでる Office ファイルのテストは行っていません。
・ウィルスに汚染された文書を用いた感染テストは行っていません。
  (危険なため行うつもりもありません。)
・対応文書ファイルの追加(例えば OASYS等)は行っていません。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E

Attachment: ole.zip
Description: Zip compressed data