#!/usr/bin/env ruby
require 'poppler'
class PDFParser
def initialize(params = nil)
@loaded = false
if (params != nil) then
@file = params[:file] || nil
if (@file != nil) then
loadFile(@file)
end
else
@file = nil
end
end
def loadFile(fileName)
@loaded = false
if (!File.exists?(fileName)) then
raise 'file not found ' + fileName
end
@file = fileName
@poppler = Poppler::Document.new(@file)
pageCount = 0;
@poppler.each do |page|
pageCount+=1
end
@pageCount = pageCount
@loaded = true
end
def DumpLinks
if (!@loaded) then
loadFile(@file)
end
@poppler.each do |page|
links = page.link_mapping
links.each do |link|
action = link.action
if(action.is_a?(Poppler::ActionGotoDest))
puts "Destination: page_num: %d, top: %f, left: %f, right: %f, zoom: %f, dest: %s" %
[action.dest.page_num, action.dest.top, action.dest.left, action.dest.right, action.dest.zoom, action.dest.named_dest]
namedDest = action.dest.named_dest
puts namedDest
if (namedDest != nil) then
dest = @poppler.find_dest(namedDest)
puts dest
end
end
end
end
end
end