2

使用docsplit gem,我可以从 PDF 或任何其他文件类型中提取文本。例如,使用以下行:

 Docsplit.extract_pages('doc.pdf')

我可以拥有 PDF 文件的文本内容。

我目前正在使用 Rails,PDF 通过请求发送并存在于内存中。查看 API 和源代码,我找不到从内存中提取文本的方法,只能从文件中提取。

有没有办法让这个 PDF 的文本避免创建临时文件?

如果有关系,我正在使用 attachment_fu

4

2 回答 2

3

使用临时目录:

require 'docsplit'

def pdf_to_text(pdf_filename)
  Docsplit.extract_text([pdf_filename], ocr: false, output: Dir.tmpdir)

  txt_file = File.basename(pdf_filename, File.extname(pdf_filename)) + '.txt'
  txt_filename = Dir.tmpdir + '/' + txt_file

  extracted_text = File.read(txt_filename)
  File.delete(txt_filename)

  extracted_text
end

pdf_to_text('doc.pdf')
于 2015-01-06T12:08:30.350 回答
0

如果你有一个字符串中的内容,使用StringIO创建一个 IO 可以读取的 File-like 对象。在 StringIO 中,无论内容是真文本还是二进制,都一样。

看看其中之一:

新的(字符串=“”[,模式])
使用字符串和模式创建新的 StringIO 实例。

open(string=""[, mode]) {|strio| ...}
等价于 ::new,除了当它被一个块调用时,它产生新实例并关闭它,并返回从块返回的结果。
于 2013-04-29T22:54:32.897 回答