Подтвердить что ты не робот

Открытие файлов .doc в Ruby

Можно ли открыть файл .doc и получить содержимое этого файла с помощью Ruby?

4b9b3361

Ответ 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.

Ответ 5

Недавно я рассмотрел это в проекте и обнаружил, что мне нужна библиотека с более легким весом, чтобы получить текст из файлов .doc,.docx и .pdf. DocRipper использует комбинацию средств командной строки Antiword, grep и Poppler/pdftotext для захвата текстового содержимого из файлов и возврата их в виде utf-8 строка.

dr = DocRipper::TextRipper.new('/path/to/file')
dr.text
=> "Document text"