Можно ли открыть файл .doc и получить содержимое этого файла с помощью Ruby?
Открытие файлов .doc в Ruby
Ответ 1
Если вам нужен только текстовый контент, вы можете посмотреть Yomu. Это драгоценный камень, который действует как обертка для Apache TIKA и поддерживает множество форматов документов, которые включают в себя следующее:
- Форматы Microsoft Office OLE 2 и Office Open XML (.doc,.docx,.xls,.xlsx,.ppt,.pptx)
- OpenOffice.org Форматы OpenDocument (.odt,.ods,.odp)
- Форматы Apple iWorks
- Формат Rich Text (.rtf)
- Формат переносимого документа (.pdf)
Ответ 2
Драгоценный камень 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
Однако docx не поддерживает файлы .doc(слово 2007 и ранее), тогда вы можете использовать WIN32OLE следующим образом:
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 }
Ответ 3
Да и Нет
В Ruby вы можете сделать что-то вроде:
thedoc = `externalProgram some_file`
Итак, вам нужна хорошая внешняя программа.
Вы можете посмотреть библиотеку программного обеспечения wv или (по-видимому, не обновленную недавно) программа antiword. Я предполагаю, что есть другие. OpenOffice может читать файлы документов и экспортировать текстовые файлы, поэтому, возможно, также работает управление OO через CLI.
Ответ 4
Если вы работаете в Windows, это будет работать: http://www.ruby-doc.org/stdlib/libdoc/win32ole/rdoc/classes/WIN32OLE.html
Ответ 5
Недавно я рассмотрел это в проекте и обнаружил, что мне нужна библиотека с более легким весом, чтобы получить текст из файлов .doc,.docx и .pdf. DocRipper использует комбинацию средств командной строки Antiword, grep и Poppler/pdftotext для захвата текстового содержимого из файлов и возврата их в виде utf-8 строка.
dr = DocRipper::TextRipper.new('/path/to/file')
dr.text
=> "Document text"