トップページ | 全エントリー一覧 | RSS購読

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
トラックバック
トラックバック送信先 :
コメント

.NETからxdoc2txt

 .NETでWordとかPDFファイルの全文検索がしたい、ってことで少しずつ調べて見ました。

検索エンジン:Hyper Estraier
抽出フィルタ:xdoc2txt
ストレージ:Amazon S3

これらを使って、Web Serviceに。
明示的に登録したファイルだけを扱って、クロールはなし。


初回は、xdoc2txt ActiveX版を取り扱うところ。

Windowsには、抽出用に、IFilterという便利なのが用意されてますが、
xdoc2txtの機能で十分だから、開発量が減って楽なので、こっちにします。



まずは、xdoc2txtのインストール(?)から。
ocxファイルをレジストリに登録。




次に、xdoc2txtのラッパー。

ActiveXなので、Visual Studioの参照設定のCOMタブから・・・追加しない!!(してもいいけど)
ActiveXを呼び出すには、ランタイム呼び出し可能ラッパー(RCW)が必要だけど、
OCX(OLEコントロール)なので、親フォームがないと動かない。



Visual Studioには、Windows フォーム ActiveX コントロール インポータ (Aximp.exe)がついてるけど、自分で呼ぶのもめんどくさい。
そんなときは、フォームデザイナのツールボックスに、OCXファイルをドラッグ&ドロップするだけで、普通のコントロールと同じようにフォームに貼り付けられるようになる。
しかも、必要な処理を全部してくれる。なんて便利。





貼り付けると、

というメンバが追加される。

フォーム自体に用事はないので、xdoc2txtインターフェイスが公開するメソッドとプロパティを、axxdoc2txt1に委譲する形で実装。
欲しいのは、Convertメソッドだけなんだけどね。





後は、xdoc2txtをラップしたFormのメソッドを呼び出すだけ。



なにやらコードに、フォームを使わないでがんばろうとした痕跡が残ってますね・・・。



呼び出すだけだと思ったら、xdoc2txtは、なんとシングル スレッド アパートメントだった。
仕方ないので、エントリポイントのMainメソッドにSTAThreadAttribute属性をつけることに。


これでめでたく実行可能に!





Webサービスにしようとすると、STAってのは面倒なことになる。
Webサービス(asmx)は、MTAだからだ。
AspCompatはPage用のディレクティブなので指定できるのはaspxなページだけ。


答えはこの辺にあるけど、また次回に。
[PRB] ASP.NET でアカウントを偽装し STA COM コンポーネントを呼び出すと「アクセス拒否」エラーになる
スポンサーサイト
トラックバック
トラックバック送信先 :
コメント

プロフィール

とむころり

Author:とむころり
24時間システムエンジニア。研究開発など何でも屋を担当。知的でおもてなし精神に満ちたシステム(サービス)が作りたい。
@tomcat_ch

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。