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 回答