寺西です。 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