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,
:optimize_objects], 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 = Prawn::Core::ObjectStore.new(options[:info])
@trailer = {}
@before_render_callbacks = []
@on_page_create_callback = nil
@compress = options[:compress] || false
@optimize_objects = options.fetch(:optimize_objects, false)
@skip_encoding = options[:skip_encoding]
@background = options[:background]
@font_size = 12
@pages = []
@page = nil
@bounding_box = nil
@margin_box = nil
@text_options = options[:text_options] || {}
@default_line_wrap = Prawn::Text::LineWrap.new
@page_number = 0
options[:size] = options.delete(:page_size)
options[:layout] = options.delete(:page_layout)
if options[:skip_page_creation]
start_new_page(options.merge(:orphan => true))
else
start_new_page(options)
end
@bounding_box = @margin_box
if block
block.arity < 1 ? instance_eval(&block) : block[self]
end
end