Ruby on rails 在Ruby中打开.doc文件

Ruby on rails 在Ruby中打开.doc文件,ruby-on-rails,ruby,ms-office,Ruby On Rails,Ruby,Ms Office,我可以打开一个.doc文件并使用Ruby获取该文件的内容吗?是和否 在Ruby中,您可以执行以下操作: thedoc = `externalProgram some_file` 所以你需要一个好的外部程序 你可以看看或(显然不是最近更新的)我想还有其他的。OpenOffice可以读取文档文件和导出文本文件,因此通过CLI驱动OO可能也会起作用。如果您在Windows上,这将起作用:如果您只需要纯文本内容,您可能需要查看一下。它是一个gem,充当Apache TIKA的包装器,支持多种文档格式,

我可以打开一个.doc文件并使用Ruby获取该文件的内容吗?

是和否 在Ruby中,您可以执行以下操作:

thedoc = `externalProgram some_file`
所以你需要一个好的外部程序


你可以看看或(显然不是最近更新的)我想还有其他的。OpenOffice可以读取文档文件和导出文本文件,因此通过CLI驱动OO可能也会起作用。

如果您在Windows上,这将起作用:

如果您只需要纯文本内容,您可能需要查看一下。它是一个gem,充当Apache TIKA的包装器,支持多种文档格式,包括以下内容:

  • Microsoft Office OLE 2和Office Open XML格式(.doc、.docx、.xls、.xlsx、.ppt、.pptx)
  • OpenOffice.org OpenDocument格式(.odt、.ods、.odp)
  • 苹果iWorks格式
  • 富文本格式(.rtf)
  • 可移植文档格式(.pdf)

    • gem docx使用非常简单

      require 'docx'
      
      puts Docx::Document.open('test.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 }
      

      我最近在一个项目中处理了这个问题,发现我想要一个更轻量级的库来获取.doc、.docx和.pdf文件中的文本。使用Antiword、grep和Poppler/pdftotext命令行工具的组合从文件中获取文本内容,并将其作为utf-8字符串返回

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

      你能写出代码示例中使用的gem名称吗?你可以在上找到它,然后通过gem install docxThank安装它,我正在尝试!nokogiri解析有点问题:“nokogiri::XML::XPath::SyntaxError:未定义的命名空间前缀://w:document//w:body//w:p”但是解析“.doc”MS Word 2004文件怎么样?现在,我看到一个错误-未知的OLE服务器:`Word.Application':(你好,杰森,你的问题很长时间都没有答案了,你找到解决办法了吗?你愿意接受其中一个答案吗?
      dr = DocRipper::TextRipper.new('/path/to/file')
      dr.text
      => "Document's text"