Class: DragonflyPdf::Analysers::PdfProperties

Inherits:
Object
  • Object
show all
Defined in:
lib/dragonfly_pdf/analysers/pdf_properties.rb

Instance Method Summary collapse

Instance Method Details

#call(content, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/dragonfly_pdf/analysers/pdf_properties.rb', line 4

def call(content, options = {})
  return {} unless content.ext
  return {} unless SUPPORTED_FORMATS.include?(content.ext.downcase)

  data = `pdftk "#{content.path}" dump_data`

  page_count = data.scan(/NumberOfPages: (\d+)/).flatten.first.to_i
  page_numbers = data.scan(/PageMediaNumber: (\d+)/).flatten.map(&:to_i)
  page_dimensions = data.scan(/PageMediaDimensions:\s*(\d+\.?\d+)\s*(\d+\.?\d+)/).map do |width_height|
    width_height.map(&:to_f).map { |dim| pt2mm(dim) }
  end
  page_rotations = data.scan(/PageMediaRotation: (\d+)/).flatten.map(&:to_f)
  aspect_ratios = page_dimensions.inject([]) { |res, page| res << (page.first / page.last) }

  {
    'format' => content.ext.downcase,
    'aspect_ratios' => aspect_ratios,
    'page_count' => page_count,
    'page_dimensions' => page_dimensions,
    'page_numbers' => page_numbers,
    'page_rotations' => page_rotations
  }
end