From 19515493a17ca7ed3de6196dd41b14e478eaa906 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Sat, 31 Oct 2015 16:47:14 +0100 Subject: Use padding instead of advancing lines when laying out PDF. --- lib/pdf_form.rb | 134 +++++++++++++++++++++++++++++--------------------------- 1 file 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 ", :align => :center, :at => [0, 0] + @document.number_pages "#{@band.name} - Norsk Urskog 2016 - Side ", :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:

- - Norsk Urskog
- v/Harald Eilertsen
- Grettevegen 9
- 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:

+ + Norsk Urskog
+ v/Harald Eilertsen
+ Grettevegen 9
+ 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 -- cgit v1.2.3