diff options
Diffstat (limited to 'lib/pdf_form.rb')
-rw-r--r-- | lib/pdf_form.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/pdf_form.rb b/lib/pdf_form.rb new file mode 100644 index 0000000..7d0aa93 --- /dev/null +++ b/lib/pdf_form.rb @@ -0,0 +1,68 @@ +require 'prawn' +require 'prawn/measurement_extensions' + +class PDFForm + def initialize(band) + @band = band + @document = Prawn::Document.new(:page_size => "A4") + end + + def render + heading + + field("Bandnavn:", @band.name) + field("Hjemsted:", @band.city) + field("Webside:", @band.website) + field("Plateselskap:", @band.label) + field("Kort bio:", @band.short_bio) + + next_line + field("Kontaktperson:", @band.contact.name) + field("Postadresse:", @band.contact.addr) + next_line + field("Telefon:", @band.contact.phone) + field("Epost:", @band.contact.email) + + next_line + field("Medlemmer:", @band.members) + + field("Låter:", @band.songs) + + @document.render_file "#{@band.name}.pdf" + end + + private + + def one_line + @one_line ||= @document.font_size.inspect.to_f * 1.4 + end + + def label_width + 3.2.cm + end + + def heading + @document.text "Påmelding til Norsk Urskog 2016", :size => 20 + end + + def next_line + @document.move_down one_line + end + + def field(title, value) + next_line + y_pos = @document.cursor + @document.text_box title, :at => [@document.bounds.left, y_pos], :width => label_width, :style => :bold + + if value.class == String + @document.text_box value, :at => [label_width, y_pos], :width => @document.bounds.right - label_width + elsif value.class == Array + value.each do |v| + @document.text_box v.to_s, :at => [label_width, y_pos], :width => @document.bounds.right - label_width + y_pos -= one_line + next_line + end + end + + end +end |