gpt4 book ai didi

ruby - 如何使用 Ruby WIN32OLE 访问 Word 文档中的 TextBox 对象文本

转载 作者:数据小太阳 更新时间:2023-10-29 08:54:41 24 4
gpt4 key购买 nike

我只是为一组用户整理了一个小脚本,该脚本收集目录中的所有 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 }
  • 亚当

最佳答案

假设等同于 doc.Sentences.each { |x| puts x.text 但是对于文本框就足够了,那么这应该适合你:

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

它看起来比您浏览句子的方式要困惑得多,但是 x.TextFrame.TextRange.text 将返回文本框中包含的实际文本。

关于ruby - 如何使用 Ruby WIN32OLE 访问 Word 文档中的 TextBox 对象文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com