class MapPrint::PdfHandler
Public Class Methods
new(context)
click to toggle source
# File lib/map_print/pdf_handler.rb, line 9 def initialize(context) @context = context end
Public Instance Methods
print()
click to toggle source
# File lib/map_print/pdf_handler.rb, line 13 def print @pdf = Prawn::Document.new @context.pdf_options || {} print_map print_images(@context.images, @pdf) print_texts(@context.texts, @pdf) scalebar_image = @context.print_scalebar if scalebar_image print_image(scalebar_image.path, @context.scalebar[:position]) end legend_image = @context.print_legend if legend_image print_image(legend_image.path, @context.legend[:position]) end @pdf.render_file(@context.output_path) end
Private Instance Methods
print_image(image_path, position)
click to toggle source
# File lib/map_print/pdf_handler.rb, line 59 def print_image(image_path, position) @pdf.image image_path, at: [position[:x], @pdf.bounds.top - position[:y]] end
print_map()
click to toggle source
# File lib/map_print/pdf_handler.rb, line 34 def print_map map_image = @context.print_layers size = @context.map[:size] geometry = '' if size && (size[:width] || size[:height]) geometry += size[:width].to_s if size[:width] geometry += 'x' geometry += size[:height].to_s if size[:height] image = MiniMagick::Image.new(map_image.path) image.combine_options do |c| c.density 300 c.resize geometry c.unsharp '1.5x1+0.7+0.02' end image.write map_image.path end map_image = @context.print_geojson(MiniMagick::Image.new(map_image.path)) position = @context.map[:position] || {} @pdf.image map_image.path, at: [position[:x] || 0, @pdf.bounds.top - (position[:y] || 0)] end