(.NETを使用して)Wordドキュメントの各ページのテキストを個別に取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/290287

質問

キーワードが発生するWord文書のページを特定する必要があります。文書のテキストを取得できるツールはいくつかありますが、テキストがどのページに表示されるかはわかりません。誰かが私にとって良い出発点を持っていますか? .NETを使用しています

ありがとう!

編集:追加の制約:相互運用機能を使用できません。

edit2:これを行うことができる安定したライブラリを知っている人がいれば、それも役立ちます。私はAsposeを使用していますが、私が知る限り、それには何もありません。

役に立ちましたか?

解決

これは私がテキストを出力する方法です。選択範囲をページに設定することができ、そのテキストをテストすることができます。 / p>

Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application();
object missing = Type.Missing;
object fileName = @"c:\file.doc";
object objFalse = false;

wordApplication.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
Microsoft.Office.Interop.Word.Document doc = wordApplication.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,ref objFalse, ref missing, ref missing, ref missing, ref missing);

//I belevie you can define a SelectionRange and insert here
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();

IDataObject data = Clipboard.GetDataObject();
string text = data.GetData(DataFormats.Text).ToString();

doc.Close(ref missing, ref missing, ref missing);
doc = null;

wordApplication.Quit(ref missing, ref missing, ref missing);
wordApplication = null;

他のヒント

ページをどのように定義していますか?

セクション/ハードページブレークのみをカウントする場合、複雑ですが実行可能です。ソフト改ページをカウントする場合、タスクは非常に難しくなり、意味がなくなります。ソフトページ区切りの場所の決定は、実行時に動的に生成され、ファイル自体には保存されないことを考慮してください。アクティブなプリンタードライバー(別のコンピューター上の同じファイルで変更可能)、フォント、カーニング、行間、マージンなど、多数の要因に依存します。

Asposeでこれを行う簡単な方法の1つは、WordファイルをPDFに変換してから、各ページのテキストを取得することです。

Asposeの内部構造や、変換時にソフトページを定義する方法については何も知りませんが、これはこれまでで最高です。

Aspose.Wordsをご利用いただきありがとうございます。

現在、パブリックAPIには「フロードキュメント」のみがあります。情報、例えば段落、表、リストなど。内部的には、ページ、テキストブロック、テキスト行などのクラスを持つページレイアウトモデルを構築します。もちろん、ドキュメントモデルとレイアウトモデルの間には内部リンクがあり、どのページがどこで、すべてのものが終わるかを調べることができます。パブリックAPIを介してこの情報を利用できるようにすることは(まあ、それでも)優先順位の高いリストです。

Aspose.Wordsサポートフォーラムにリクエストを記録しましたか?この情報を使用して投票システムを維持し、より多くの票を最初に獲得する機能に取り組みます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top