summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2015-10-31 16:47:14 +0100
committerHarald Eilertsen <haraldei@anduin.net>2015-10-31 16:51:02 +0100
commit19515493a17ca7ed3de6196dd41b14e478eaa906 (patch)
treed604bc9346fcbdc016124e3c3cbbe17ab9b9512d
parente7aed5cfbd8ccf52303a739285dc8abebe8cebdf (diff)
downloadnorsk-urskog-registrations-19515493a17ca7ed3de6196dd41b14e478eaa906.tar.gz
norsk-urskog-registrations-19515493a17ca7ed3de6196dd41b14e478eaa906.tar.bz2
norsk-urskog-registrations-19515493a17ca7ed3de6196dd41b14e478eaa906.zip
Use padding instead of advancing lines when laying out PDF.
-rw-r--r--lib/pdf_form.rb134
1 files changed, 69 insertions, 65 deletions
diff --git a/lib/pdf_form.rb b/lib/pdf_form.rb
index a5af9ab..a52d315 100644
--- a/lib/pdf_form.rb
+++ b/lib/pdf_form.rb
@@ -9,44 +9,40 @@ class PDFForm
def render(filename)
heading
-
- next_line
intro_text
- subheading("Generell info:")
-
- field("Band:", @band.name_and_city)
- field("Webside:", @band.website)
- field("Plateselskap:", @band.label)
- field("Kort bio:", @band.short_bio)
- field("Medlemmer:", @band.members.split("\n"))
-
- next_line
- field("Kontaktperson:", @band.contact.name)
- field("Postadresse:", @band.contact.addr.split("\n"))
- field("Telefon:", @band.contact.phone)
- field("Epost:", @band.contact.email)
+ @document.pad_bottom(5) do
+ subheading("Generell info:")
+ field("Band:", @band.name_and_city)
+ field("Webside:", @band.website)
+ field("Plateselskap:", @band.label)
+ field("Kort bio:", @band.short_bio)
+ field("Medlemmer:", @band.members)
+ end
- next_line
- next_line
+ @document.pad_bottom(5) do
+ field("Kontaktperson:", @band.contact.name)
+ field("Postadresse:", @band.contact.addr)
+ field("Telefon:", @band.contact.phone)
+ field("Epost:", @band.contact.email)
+ end
subheading("Låter:")
@band.songs.each do |song|
unless song.title.empty?
- 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 }
+ @document.pad_bottom(10) do
+ field("Tittel", song.to_s)
+ field("ISRC-kode:", song.isrc)
+ field("Utøvere:", song.performers)
+ field("Komponister:", song.composers)
+ field("Merknad:", song.notes)
+ end
end
end
- next_line
end_text
- @document.number_pages "Side <page>", :align => :center, :at => [0, 0]
+ @document.number_pages "#{@band.name} - Norsk Urskog 2016 - Side <page>", :align => :center, :at => [0, 0]
@document.render_file filename
end
@@ -61,12 +57,15 @@ class PDFForm
end
def heading
- @document.text "Påmelding til Norsk Urskog 2016", :size => 20
+ @document.pad_bottom(10) do
+ @document.text "Påmelding til Norsk Urskog 2016", :size => 20
+ end
end
def subheading(text)
- @document.text text, :size => 16, :style => :bold
- @document.stroke { @document.horizontal_rule }
+ @document.pad(5) do
+ @document.text text, :size => 16, :style => :bold
+ end
end
def next_line
@@ -74,52 +73,57 @@ class PDFForm
end
def field(title, value)
- @document.text_box title,
- :at => [@document.bounds.left, @document.cursor],
- :width => label_width,
- :style => :bold
-
- @document.span(@document.bounds.right - label_width, :position => label_width) do
- if value.class == String
- @document.text value
- elsif value.class == Array
- first = true
- value.each do |v|
- next_line unless first
- @document.text v.to_s
- first = false
+ @document.pad_bottom(2) do
+ @document.text_box(title,
+ :at => [@document.bounds.left, @document.cursor],
+ :width => label_width,
+ :style => :bold)
+
+ @document.span(@document.bounds.right - label_width, :position => label_width) do
+ if value.class == String
+ value = " " if value.empty?
+ @document.text value
+ elsif value.class == Array
+ first = true
+ value.each do |v|
+ @document.text v.to_s
+ end
+ elsif value.class == Float
+ @document.stroke { @document.horizontal_line 0, value, :at => @document.cursor - one_line}
end
- elsif value.class == Float
- @document.stroke { @document.horizontal_line label_width, label_width + value, :at => @document.cursor - one_line}
end
end
end
def intro_text
- @document.text((<<-END.gsub(/\s+/, ' ') + "\n\n"), :inline_format => true)
- Takk for din påmelding til Norsk Urskog 2016! Nedenfor finner du de opplysningene vi har
- registrert om din påmelding. Vennligst se over at alt er riktig, skriv så ut og send skjemaet
- i underskrevet tilstand tilbake til:<br><br>
-
- <b>Norsk Urskog</b><br>
- v/Harald Eilertsen<br>
- Grettevegen 9<br>
- 3622 Svene
- END
+ @document.pad_bottom(10) do
+ @document.text((<<-END.gsub(/\s+/, ' ')), :inline_format => true)
+ Takk for din påmelding til Norsk Urskog 2016! Nedenfor finner du de opplysningene vi har
+ registrert om din påmelding. Vennligst se over at alt er riktig, skriv så ut og send skjemaet
+ i underskrevet tilstand tilbake til:<br><br>
+
+ <b>Norsk Urskog</b><br>
+ v/Harald Eilertsen<br>
+ Grettevegen 9<br>
+ 3622 Svene
+ END
+ end
end
def end_text
+ if @document.cursor < 120
+ @document.start_new_page
+ end
+
@document.span(@document.bounds.right) do
- next_line
- @document.text((<<-END.gsub(/\s+/, ' ') + "\n\n"), :inline_format => true)
- Jeg bekrefter herved at informasjonen gitt ovenfor er riktig, og at jeg på vegne av
- #{@band.name} har fullmakt til å melde ovennevnte låter på Norsk Urskog Metal Sampler 2016:
- END
- field("Sted:", 5.cm)
- next_line
- field("Dato:", 5.cm)
- next_line
- field("Sign:", 10.cm)
+ @document.pad(5) do
+ @document.text((<<-END.gsub(/\s+/, ' ') + "\n\n"), :inline_format => true)
+ Jeg bekrefter herved at informasjonen gitt ovenfor er riktig, og at jeg på vegne av
+ #{@band.name} har fullmakt til å melde ovennevnte låter på Norsk Urskog Metal Sampler 2016:
+ END
+ end
+ @document.pad_bottom(12) { field("Dato/Sted:", 5.cm) }
+ @document.pad_top(12) { field("Sign:", 10.cm) }
end
end
end