summaryrefslogblamecommitdiffstats
path: root/lib/pdf_form.rb
blob: 88cb44d517f164b4262fc2bf47fe421c4d059fa6 (plain) (tree)



















                                                       
                                                         





                                          










                                                    
 
                                                                          
















                                                                  




                                                     





                                



                                                       

                            



                                                       
                              
                  
                       
                              
 






                                                         

     
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.split("\n"))
    field("Telefon:", @band.contact.phone)
    field("Epost:", @band.contact.email)

    next_line
    field("Medlemmer:", @band.members)

    next_line
    subheading("Låter:")
    @band.songs.each do |song|
      field("Tittel", song.to_s)
      field("ISRC-kode:", song.isrc)
      field("Utøvere:", song.performers)
      field("Komponister:", song.composers)
      field("Merknad:", song.notes)
      next_line
      @document.stroke { @document.horizontal_rule }
    end

    @document.number_pages "Side <page>", :align => :center, :at => [0, 0]
    @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 subheading(text)
    @document.text text, :size => 16, :style => :bold
    @document.stroke { @document.horizontal_rule }
  end

  def next_line
    @document.move_down one_line
  end

  def field(title, value)
    next_line
    @document.text_box title,
      :at => [@document.bounds.left, @document.cursor],
      :width => label_width,
      :style => :bold

    if value.class == String
      @document.text_box value,
        :at => [label_width, @document.cursor],
        :width => @document.bounds.right - label_width,
        :overflow => :expand
    elsif value.class == Array
      first = true
      value.each do |v|
        next_line unless first

        @document.text_box v.to_s,
          :at => [label_width, @document.cursor],
          :width => @document.bounds.right - label_width,
          :overflow => :expand

        first = false
      end
  end
end