Sha256: 499205f17bb55e6f8e5bae4752fe7690dc803851032af24f5b0424b62eb3f9d8
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
require 'pdf/info/exceptions' module PDF class Info @@command_path = "pdfinfo" def self.command_path=(path) @@command_path = path end def self.command_path @@command_path end def initialize(pdf_path) @pdf_path = pdf_path end def command output = `#{self.class.command_path} "#{@pdf_path}" -f 1 -l -1` exit_code = $? case exit_code when 0 return output else exit_error = PDF::Info::UnexpectedExitError.new exit_error.exit_code = exit_code raise exit_error end end def metadata begin process_output(command) rescue UnexpectedExitError => e case e.exit_code when 1 raise FileError when 2 raise OutputError when 3 raise BadPermissionsError else raise UnknownError end end end def process_output(output) rows = output.split("\n") metadata = {} rows.each do |row| pair = row.split(':', 2) case pair.first when "Pages" metadata[:page_count] = pair.last.to_i when "Encrypted" metadata[:encrypted] = pair.last == 'yes' when "PDF version" metadata[:version] = pair.last.to_f when /^Page.*size$/ metadata[:pages] ||= [] metadata[:pages] << pair.last.scan(/[\d.]+/).map(&:to_f) end end return metadata end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pdf_info-0.2.0 | lib/pdf/info.rb |
pdf_info-0.1.0 | lib/pdf/info.rb |