summaryrefslogtreecommitdiffstats
path: root/lib/pdf_form.rb
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2015-10-04 14:42:15 +0200
committerHarald Eilertsen <haraldei@anduin.net>2015-10-04 14:42:50 +0200
commitd1c061f1aee62c83e21fb5bf7b26901ab8c12af4 (patch)
treeaa223229555efd4225e097dd901f61762af39c98 /lib/pdf_form.rb
parent448380ae81e3dfe182b9092880d4a314b39d034a (diff)
downloadnorsk-urskog-registrations-d1c061f1aee62c83e21fb5bf7b26901ab8c12af4.tar.gz
norsk-urskog-registrations-d1c061f1aee62c83e21fb5bf7b26901ab8c12af4.tar.bz2
norsk-urskog-registrations-d1c061f1aee62c83e21fb5bf7b26901ab8c12af4.zip
Flesh out PDF generation.
Diffstat (limited to 'lib/pdf_form.rb')
-rw-r--r--lib/pdf_form.rb68
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