年末からバタバタしていたプロジェクトで、主に担当しているモジュールはファイル解析部分でしたが、色々なミスやトラブルがありましたが、ようやくです。これで、プロジェクト内のすべてのファイルがまとめられました。今後の参考のために、このプロジェクトで解析される主なドキュメントには、Office ファイル、CSV、RTF、TXT、および EML の電子メールが含まれます。 、msg および pst 形式、および rar および zip アーカイブを解凍すると、実際には mlf 形式のファイルがありますが、私と会社の上司の調査の後、現時点ではこの困難を克服できません。なので、当面はこの形式のファイルをあきらめて、他のすべての分析を行うことができます。ファイルの解析に関しては、後ですべてまとめます。ティカ。
今日はまず、この jtd ファイルの分析を見ていきます。この jtd ファイルが何であるかを知らない人もいるかもしれませんが、最初に説明しておきます:
jtd格式文件是由日本的文字处理软件一太郎生成的文件格式
jtd 形式のファイルは私たちの言葉であることが理解できます。そうでない限り、通常は使用します。 編集して開くには、一太郎ソフトウェアを使用する必要があります。 この一太郎ソフトウェアがどのようなものかを説明します。
この要件を初めて見たとき、私はとても恥ずかしかったです。これは日本のソフトです、調べても分かりません、ああ、Baiduやstackoverflowで調べても見つかりませんでした。日本語を理解しているので、上司は日本語の Web サイトで解決策を見つけました。Web サイトのアドレスは http://d.hatena.ne.jp/さとるふじもり/20070227/1172549793 です
解決策は、vbs スクリプトを使用して jtd 形式のファイルを変換することです。を txt ファイルに変換し、対応する txt を解析してコンテンツを取得します。Web サイトのスクリプトは次のとおりです。
//taro2txt.vbs Set taro = CreateObject("JXW.Application") taro.Visible = True taro.Documents.Open "c:\taro\a.jtd" taro.ActiveDocument.SaveAs "c:\out\a.txt", "", "", "", 10, "ShiftJIS" //※1 taro.Quit
10 は識別子であり、jtd 形式のファイルを txt 形式のファイルに変換することを意味します。 jtd形式のファイルを他の形式に変換したい場合は、10を他の識別子に置き換える必要がありますが、さらに恥ずかしいのは、どの番号がどの文書を表すかを説明する特定の文書が見つからなかったことです。 100 と厄介な形式がたくさん出てきましたが、便利なのは jtd 形式のファイルを txt 形式のファイルに変換することしかできません。ただし、この場合、元のファイル内のすべての画像が消えてしまいます。ファイルの内容を読み取って Solr に入力して取得するため、画像がなければ画像も存在しません。その後、この方法が問題を解決するために採用されました。
上記のスクリプトを通じて、パスワードなしの jtd ファイルを txt ファイルに変換できますが、最も恥ずかしいのは、jtd 形式のファイルにはパスワードが付いていることです。これは恥ずかしいことですが、幸いにも最終的には解決されました、忘れました。その時は解決しましたが、解決策は次のとおりです:
//taro2txt.vbs Set taro = CreateObject("JXW.Application") taro.Visible = True taro.Documents.Open "c:\taro\a.jtd",password//在此处加上密码 taro.ActiveDocument.SaveAs "c:\out\a.txt", "", "", "", 10, "ShiftJIS" //※1 taro.Quit
スクリプトが完了したら、[実行]をクリックして特定のjtdファイルをtxtファイルに変換し、txtファイルを処理してコンテンツ(txt形式)を抽出します。ファイルコンテンツの抽出については、後で別の記事で説明します)。
上記の問題は解決しましたが、すべてのjtdファイルのスクリプトファイルを作成できないという問題がまだあります。また、顧客がどのようなファイルを持っているかわからないため、vbsにパラメータを渡すことを考えました。 VBS の構文は分かりませんが、ネットで言われていることを参考に書きました。
Option Explicit Dim a0 : a0 = WScript.Arguments(0) Dim a1 : a1 = WScript.Arguments(1) Dim a2 : a2 = WScript.Arguments(2) Dim taro ExchangeFile a0, a1, a2 Sub ExchangeFile(src,dest,password) Set taro = CreateObject("JXW.Application") taro.Visible = True taro.Documents.Open src,password taro.ActiveDocument.SaveAs dest, "", "", "", 10, "" taro.Quit End Sub
ここで、a0 は jtd ファイルのパスを表します。 a2は生成されるtxt形式のファイルのパスで、実際にはパラメータを渡して関数を呼び出す処理となるjtdファイルのパスワードを表します。
スクリプトが完成したら、javaを使ってvbsスクリプトを呼び出す問題ですが、この質問に対する答えはstackoverflowで見つけました。
public static void main(String[] args) { try { Runtime.getRuntime().exec( "wscript D:/Send_Mail_updated.vbs" ); } catch( IOException e ) { System.out.println(e); System.exit(0); } }
上記の一連の手順により、次のことができます。 jtd ファイルを txt ファイルに正常に変換しましたが、いくつかの問題があります:
Java プログラムを通じて vbs スクリプトを呼び出しても、txt ファイルが実際に生成されたかどうかを示す値が返されません。パスワードが間違っている場合、対応するtxtファイルが生成できません。 時々、txtファイルが生成されているか確認してください。回数によっては変換に失敗したと判断されます。たとえば、10M のファイルを 5 秒ごとにチェックする場合、合計 10 回チェックすることになり、txt ファイルが生成されない場合、パスワードを試行する際に時間の無駄と判断されます。 、ファイルが比較的大きいか、マシンの構成が不十分である可能性がありますが、チェック時間が経過すると、正しく変換できないと直接判断されます。 vbs スクリプトを実行すると、一太郎ソフトウェアが開きます。パスワードを試行すると、パスワードが間違っていると、アプリケーションがデプロイされているサーバーに Windows エラーのポップアップ ウィンドウが表示されますが、最終的には Itaro のプロセスが実行されます。 Kill ですが、殺される前に、顧客は一太郎のプログラムとエラー メッセージをはっきりと見ることができます。これは非常に恥ずかしいことです。
jtd ファイルが大きすぎる場合、たとえばファイルが 30M に達すると、スクリプトの変換速度が非常に遅くなります。また、質問 2 では、ファイル変換プロセス中に、顧客はサーバー上の一太郎プログラムを見ることができると述べました。はい、この期間中にお客様が一太郎を直接強制終了した場合、ファイル変換は確実に失敗します
上記の問題は当面解決されておらず、お客様側の導入後の使用状況によって異なります。 jtd 形式のファイルはすべて 10M 未満なので、それほど問題はありませんが、ファイルが 30M を超えると、変換プロセスが確実に遅くなり、一太郎ソフトウェアが破損する危険性が常にあります。変換プロセス中に強制終了されます。具体的な詳細はお客様の試用状況によって異なります。
今回はjtd形式のファイル解析についてですが、jtd形式のファイルをtxt形式のファイルに変換した後の内容の抽出については、また後日書きます。
以上がjtd形式ファイル変換解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。