使用Docsplit计算ROR中的PDF页面

时间:2019-07-09 21:46:36

标签: ruby-on-rails pdf docsplit

我需要使用Docsplit获取存储在Ruby on Rails 5.2.3 ActiveStorage中的PDF文件的页面数。

我正在使用Ruby on Rails ActiveStorage上传PDF文档。我了解这些文档存储为Blob。我希望可以通过以下方式将对PDF文件的引用传递给Docsplit:

const func = arg2 => {
    const digits = new Set(Array(10).keys());
    for (let digit of arg2) digits.delete(digit);
    const allowed = [...digits];
    return Array.from({length:5}, () => 
        allowed[Math.floor(Math.random() * allowed.length)]
    ).join``;
}

console.log(func([6, 2]));

但是以上情况导致错误:

pages = Docsplit.extract_length(@car_record.crecord)

1 个答案:

答案 0 :(得分: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)