2

すべての PDF および DOC* ファイルをディレクトリーに収集し、ハイパーリンクを解析するユーザー チーム用の小さなスクリプトを作成しました。PDF セクションは意図したとおりに機能しますが、デザイン用に提供された Word ドキュメント (プレーン テキスト) と、使用している実際の Word ドキュメント (テキストは TextBox 要素にあります) との違いは異なります。

これらの新しいファイルから文/単語を収集しようとしたときに、ファイルの背景画像のテキスト (通常は特殊文字) しか受け取っていないことに気付きました。

API を参照し、ole_methods にリストされているかなりの数のメソッドを試しましたが、TextBox にアクセスして必要なテキストを取得する方法をまだ見つけていません。

Word ファイルを PDF に変換し、その方法でショートカットできることはわかっていますが (テスト済みで実証済み)、それにはかなりのファイル管理が必要であり、より単純な解決策であるテキストへのアクセスの代わりに避けたいと思います。

テキスト ボックスの描画機能 (Word 2007 以降) を使用して、ドキュメント内の要素を複製できます。

この要素にアクセスする方法を知っている人はいますか?それとも、ドキュメントがどの要素にあるかに関係なく、ドキュメント内のすべてのテキストを見つけることができますか?

require 'win32ole'
word = WIN32OLE.new('Word.Application')
doc = word.Documents.Open(file)
doc.Sentences.each { |x| puts x.text }
  • アダム
4

1 に答える 1

3

テキストボックスと同等doc.Sentences.each { |x| puts x.text }の何かで十分であると仮定すると、これはあなたのために働くはずです:

doc.Shapes.each do |x|
  puts x.TextFrame.TextRange.text
end

文章をどのように読んだかよりもかなり厄介に見えますがx.TextFrame.TextRange.text、テキストボックスに含まれている実際のテキストが返されます。

于 2010-12-12T09:45:34.613 に答える