def initialize(options={},&block)
Prawn.verify_options [:page_size, :page_layout, :margin, :left_margin,
:right_margin, :top_margin, :bottom_margin, :skip_page_creation,
:compress, :skip_encoding, :text_options, :background, :info], options
self.class.extensions.reverse_each { |e| extend e }
options[:info] ||= {}
options[:info][:Creator] ||= "Prawn"
options[:info][:Producer] = "Prawn"
options[:info].keys.each do |key|
if options[:info][key].kind_of?(String)
options[:info][key] = Prawn::LiteralString.new(options[:info][key])
end
end
@version = 1.3
@store = ObjectStore.new(options[:info])
@trailer = {}
@before_render_callbacks = []
@page_size = options[:page_size] || "LETTER"
@page_layout = options[:page_layout] || :portrait
@compress = options[:compress] || false
@skip_encoding = options[:skip_encoding]
@background = options[:background]
@font_size = 12
@page_content = nil
@bounding_box = nil
@margin_box = nil
@text_options = options[:text_options] || {}
apply_margin_option(options) if options[:margin]
default_margin = 36
@margins = { :left => options[:left_margin] || default_margin,
:right => options[:right_margin] || default_margin,
:top => options[:top_margin] || default_margin,
:bottom => options[:bottom_margin] || default_margin }
generate_margin_box
@bounding_box = @margin_box
start_new_page unless options[:skip_page_creation]
if block
block.arity < 1 ? instance_eval(&block) : block[self]
end
end