我可以打开.doc文件并使用Ruby获取该文件的内容吗?
答案 0 :(得分:11)
如果您只需要纯文本内容,则可能需要查看Yomu。它是一个gem,它充当Apache TIKA的包装器,它支持各种文档格式,包括以下内容:
答案 1 :(得分:10)
gem docx使用起来非常简单
require 'docx'
puts Docx::Document.open('test.docx')
或
d = Docx::Document.open('test.docx')
d.each_paragraph do |p|
puts p
end
您可以在https://github.com/chrahunt/docx找到它并按gem install docx
require 'win32ole'
begin
word = WIN32OLE.connect('Word.Application')
doc = word.ActiveDocument
rescue
word = WIN32OLE.new('word.application')
path_open = 'C:\Users\...\test.doc' #yes: backslashes in windows
doc = word.Documents.Open(path_open)
end
word.visible = true
doc.Sentences.each { |x| puts x.text }
答案 2 :(得分:4)
在Ruby中,您可以执行以下操作:
thedoc = `externalProgram some_file`
所以你需要的是一个好的 externalProgram。
您可以查看software library wv或(显然最近未更新)program antiword.我想其他人。 OpenOffice 可以读取doc文件和导出文本文件,因此通过CLI驱动OO也可能有效。
答案 3 :(得分:2)
如果您使用的是Windows,则可以使用:http://www.ruby-doc.org/stdlib/libdoc/win32ole/rdoc/classes/WIN32OLE.html
答案 4 :(得分:1)
我最近在一个项目中处理了这个问题,发现我想要一个更轻量级的库来从.doc,.docx和.pdf文件中获取文本。 DocRipper使用Antiword,grep和Poppler / pdftotext命令行工具的组合来从文件中获取文本内容并将其作为utf-8字符串返回。
dr = DocRipper::TextRipper.new('/path/to/file')
dr.text
=> "Document's text"