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
|