# app/services/pdf/base_pdf.rb # # Layout base dos PDFs da Gade: cabeçalho preto com logo laranja, # rodapé com data de geração. Herdar e implementar #corpo. # module Pdf class BasePdf LARANJA = 'F97316' PRETO = '0A0A0A' CINZA = '6B7280' def initialize @pdf = Prawn::Document.new(page_size: 'A4', margin: [40, 40, 60, 40]) end def render cabecalho corpo rodape @pdf.render end private def cabecalho @pdf.fill_color PRETO @pdf.fill_rectangle [-40, @pdf.cursor + 40], @pdf.bounds.width + 80, 70 @pdf.fill_color LARANJA @pdf.fill_rectangle [-40 + 0, @pdf.cursor + 40], 8, 70 # faixa laranja lateral @pdf.fill_color 'FFFFFF' @pdf.text_box 'REEM TRANSPORTE', at: [10, @pdf.cursor + 20], size: 20, style: :bold @pdf.fill_color LARANJA @pdf.text_box 'Sistema de Controle de Custos Logísticos', at: [10, @pdf.cursor - 4], size: 10 @pdf.fill_color '000000' @pdf.move_down 55 end def rodape @pdf.repeat(:all) do @pdf.bounding_box [0, 20], width: @pdf.bounds.width do @pdf.fill_color CINZA @pdf.text "Gerado em #{Time.current.strftime('%d/%m/%Y %H:%M')} · Reem Transporte — documento interno", size: 8, align: :center @pdf.fill_color '000000' end end end def moeda(v) "R$ #{format('%.2f', v.to_f)}".gsub('.', ',') end def secao(titulo) @pdf.move_down 14 @pdf.fill_color LARANJA @pdf.text titulo, size: 13, style: :bold @pdf.stroke_color LARANJA @pdf.stroke_horizontal_rule @pdf.fill_color '000000' @pdf.move_down 8 end end end