Skip to content

Instantly share code, notes, and snippets.

@codearmorygists
Created September 19, 2012 23:05
Show Gist options
  • Save codearmorygists/3752919 to your computer and use it in GitHub Desktop.
Save codearmorygists/3752919 to your computer and use it in GitHub Desktop.
Recurse directory and count all pages in pdf files
require 'rubygems'
require 'pdf/reader'
class TotalPages
def count(dir)
@conv_directory = dir
## I output the directory argument as a test with the below line -
## mostly to make sure that passing '.' gets current dir
# puts @conv_directory
recurse_and_count
end
def directory
@conv_directory
end
def directory_tree
Dir["#{directory}/**/*"]
end
def recurse_and_count
total = 0
directory_tree.each do |item|
case File.stat(item).ftype
when 'file'
if File.extname(item).downcase == ".pdf"
receiver = PageReceiver.new
pdf = PDF::Reader.file(item, receiver, :pages => false)
total += receiver.pages
end rescue p item
end
end
total
end
end
# receiver = PageReceiver.new
# pdf = PDF::Reader.file("somefile.pdf", receiver, :pages => false)
class PageReceiver
attr_accessor :pages
# Called when page parsing ends
def page_count(arg)
@pages = arg
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment