Я обрабатываю pdf, загружаемый пользователем, извлекая текст из него и сохраняя вывод в текстовом файле для последующей обработки.Carrierwave: файл Temp процесса, а затем загружать через туман
Локально я храню PDF в своей общей папке, но когда я работаю на Heroku, мне нужно использовать S3.
Я думал, что путь PDF была проблема, поэтому я включил
если Rails.env.test? || Rails.env.cucumber?
Но до сих пор я получаю
ArgumentError (вход должен быть в IO-подобный объект или имя файла):
Есть ли способ временного хранения PDF в моем корне/tmp на Heroku, получить текст из него, а затем, после этого, загрузить документ на S3?
def convert_pdf
if Rails.env.test? || Rails.env.cucumber?
pdf_dest = File.join(Rails.root, "public", @application.document_url)
else
pdf_dest = @application.document_url
end
txt_file_dest = Rails.root + 'tmp/pdf-parser/text'
document_file_name = /\/uploads\/application\/document\/\d{1,}\/(?<file_name>.*).pdf/.match(@application.document_url)[:file_name]
PDF::Reader.open(pdf_dest) do |reader|
File.open(File.join(txt_file_dest, document_file_name + '.txt'), 'w+') do |f|
reader.pages.each do |page|
f.puts page.text
end
end
end
end