class Receipt::Pdf
Attributes
errors[R]
params[R]
Public Class Methods
new(params)
click to toggle source
# File lib/receipt/pdf.rb, line 27 def initialize(params) @params = OpenStruct.new(params) setup_i18n @errors = {} end
Public Instance Methods
after_receipt_box(&block)
click to toggle source
# File lib/receipt/pdf.rb, line 55 def after_receipt_box(&block) @after ||= block end
before_receipt_box(&block)
click to toggle source
# File lib/receipt/pdf.rb, line 51 def before_receipt_box(&block) @before ||= block end
currency()
click to toggle source
# File lib/receipt/pdf.rb, line 83 def currency params.currency || t('receipt.currency') end
data()
click to toggle source
# File lib/receipt/pdf.rb, line 34 def data return unless valid? generate render end
file()
click to toggle source
# File lib/receipt/pdf.rb, line 41 def file return unless valid? @file ||= lambda do generate save_as(path) path end.call end
filename()
click to toggle source
# File lib/receipt/pdf.rb, line 75 def filename File.basename(path) end
mimetype()
click to toggle source
# File lib/receipt/pdf.rb, line 79 def mimetype 'application/pdf' end
valid?()
click to toggle source
# File lib/receipt/pdf.rb, line 59 def valid? [ :id, :amount, :payer, :receiver, :description ].each do |p| if params.send(p).to_s.empty? @errors[p] = t('receipt.errors.required_param_not_found') end end @errors.size == 0 end
Private Instance Methods
body()
click to toggle source
# File lib/receipt/pdf.rb, line 114 def body text( [ "#{t('receipt.received_from')} <b>#{payer}</b>", "#{t('receipt.the_amount_of')} <b>#{formated_amount}</b>", "#{t('receipt.relating_to')} <b>#{description}</b>." ].join(' '), inline_format: true ) end
centered_text(s)
click to toggle source
# File lib/receipt/pdf.rb, line 172 def centered_text(s) text(s, align: :center) end
date_box(x, y, width)
click to toggle source
# File lib/receipt/pdf.rb, line 145 def date_box(x, y, width) bounding_box [x, y], width: width do text( [ location, l(date, format: :long) ].compact.join(', ') ) end end
formated_amount()
click to toggle source
# File lib/receipt/pdf.rb, line 138 def formated_amount [ currency, amount ].compact.join(' ') end
generate()
click to toggle source
# File lib/receipt/pdf.rb, line 88 def generate valid? before_receipt_box.call if before_receipt_box move_down 20 receipt_box move_down 20 after_receipt_box.call if after_receipt_box end
header()
click to toggle source
# File lib/receipt/pdf.rb, line 100 def header pad(10) do text(t('receipt.title').upcase, align: :center, style: :bold, size: 20) move_up 20 text("#{t('receipt.number')}: <b>#{id}</b>", inline_format: true) move_up 15 text("#{t('receipt.amount')}: <b>#{formated_amount}</b>", inline_format: true, align: :right) pad(10) { stroke_horizontal_rule } end end
load_translations()
click to toggle source
# File lib/receipt/pdf.rb, line 195 def load_translations locales = Dir[File.expand_path('../../../config/locale/*.yml', __FILE__)] I18n.load_path += locales I18n.backend.load_translations end
padded_bounding_box(padding, *args) { || ... }
click to toggle source
# File lib/receipt/pdf.rb, line 176 def padded_bounding_box(padding, *args) bounding_box(*args) do stroke_bounds bounding_box( [padding, bounds.height - padding], width: bounds.width - (2 * padding), height: bounds.height - (2 * padding) ) do yield end end end
path()
click to toggle source
# File lib/receipt/pdf.rb, line 205 def path @path ||= (params.filepath || tempfilepath) end
receipt_box()
click to toggle source
# File lib/receipt/pdf.rb, line 156 def receipt_box padded_bounding_box(10, [30, cursor], width: 500, height: 250) do header body footer end end
set_locale()
click to toggle source
# File lib/receipt/pdf.rb, line 201 def set_locale I18n.locale = (locale || I18n.default_locale) end
setup_i18n()
click to toggle source
# File lib/receipt/pdf.rb, line 190 def setup_i18n load_translations set_locale end
signature_box(x, y, width)
click to toggle source
# File lib/receipt/pdf.rb, line 164 def signature_box(x, y, width) bounding_box [x, y], width: width do stroke_horizontal_rule move_down 10 centered_text(receiver) end end
tempfilepath()
click to toggle source
# File lib/receipt/pdf.rb, line 209 def tempfilepath @tempfilepath ||= File.join( Dir.tmpdir, Dir::Tmpname.make_tmpname("#{t('receipt.title')}", "#{id}.pdf") ) end