1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#!/usr/bin/env ruby
require 'rubygems'
$LOAD_PATH.unshift(File.dirname(__FILE__) + "/../lib")
USAGE = "USAGE: " + File.basename(__FILE__) + " <file> <object id> [generation]"
require 'pdf/reader'
filename, id, gen = *ARGV
if filename.nil? || id.nil?
puts USAGE
exit 1
elsif !File.file?(filename)
$stderr.puts "#{filename} does not exist"
exit 1
end
# tweak the users options
id = id.to_i
gen ||= 0
gen = gen.to_i
# make magic happen
begin
obj = nil
PDF::Reader.open(filename) do |pdf|
obj = pdf.objects[PDF::Reader::Reference.new(id, gen)]
end
case obj
when Hash, Array
puts obj.inspect
when PDF::Reader::Stream
puts obj.hash.inspect
puts obj.unfiltered_data
else
puts obj
end
rescue PDF::Reader::InvalidObjectError
$stderr.puts "Error retreiving object #{id}, gen #{gen}. Does it exist?"
exit 1
rescue PDF::Reader::MalformedPDFError => e
$stderr.puts "Malformed PDF file: #{e.message}"
exit 1
rescue PDF::Reader::UnsupportedFeatureError => e
$stderr.puts "PDF file implements a feature unsupported by PDF::Reader: #{e.message}"
exit 1
end
|