Открытие .doc файлов в Ruby - PullRequest
12 голосов
/ 01 июня 2011

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

Ответы [ 5 ]

11 голосов
/ 28 марта 2012

Если вам нужен только текстовый контент, вы можете взглянуть на 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 Format (.rtf)
  • Формат переносимого документа (.pdf)
10 голосов
/ 29 марта 2014

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

docx, однако, не поддерживает файлы .doc (Word 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 }
4 голосов
/ 01 июня 2011

Да и нет

В Ruby вы можете сделать что-то вроде:

thedoc = `externalProgram some_file`

И поэтому вам нужна хорошая externalProgram.

Вы можете посмотреть на библиотеку программного обеспечения wv или (очевидно, недавно не обновленную) программу antiword. Я думаю, что есть и другие. OpenOffice может читать файлы документов и экспортировать текстовые файлы, поэтому, вероятно, будет работать и управление OO через CLI.

2 голосов
/ 01 июня 2011

Если вы работаете в Windows, это будет работать: http://www.ruby -doc.org / stdlib / libdoc / win32ole / rdoc / classes / WIN32OLE.html

1 голос
/ 23 июля 2014

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

dr = DocRipper::TextRipper.new('/path/to/file')
dr.text
=> "Document's text"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...