Подсчет страниц PDF в ROR с помощью Docsplit

Мне нужно получить количество страниц в файлах PDF, хранящихся в Ruby on Rails 5.2.3 ActiveStorage, с помощью Docsplit.

Я загружаю PDF-документы с помощью Ruby on Rails ActiveStorage. Я понимаю, что эти документы хранятся в виде большого двоичного объекта. Я надеялся, что смогу передать ссылку на файл PDF в Docsplit с помощью чего-то вроде:

pages = Docsplit.extract_length(@car_record.crecord)

Но вышеприведенное привело к ошибке:

no implicit conversion of ActiveStorage::Attached::One into String

person Clint Laskowski    schedule 09.07.2019    source источник


Ответы (1)


Docsplit.extract_length ожидает строку (предположительно путь к локальному файлу), а @car_record.crecord возвращает объект ActiveRecord.

Вы должны быть в состоянии сделать что-то вроде,

file = @car_record.crecord.download_blob_to_tempfile
Docsplit.extract_length(file.path)

Редактировать: ActiveStorage::Downloading удаляется в 6.1. Попробуйте что-то вроде следующего:

tempfile = Tempfile.new 
tempfile.binmode

begin
  @car_record.crecord.download { |chunk| tempfile.write(chunk) } 
  tempfile.flush
  tempfile.rewid
ensure 
  tempfile.close!
end

Docsplit.extract_length(tempfile.path)
person Josh Brody    schedule 09.07.2019
comment
Для этого, я думаю, мне нужно включить ActiveStorage::Downloading где-то, но я не уверен, где? - person Clint Laskowski; 10.07.2019
comment
Похоже, его удаляют в 6.1. Я обновил свой ответ. - person Josh Brody; 10.07.2019