lib/brcobranca/boleto/template/rghost2.rb in brcobranca-10.1.0 vs lib/brcobranca/boleto/template/rghost2.rb in brcobranca-11.0.0
- old
+ new
@@ -1,255 +1,263 @@
# frozen_string_literal: true
begin
- require 'rghost'
- rescue LoadError
- require 'rubygems' unless ENV['NO_RUBYGEMS']
- gem 'rghost'
- require 'rghost'
- end
-
- begin
- require 'rghost_barcode'
- rescue LoadError
- require 'rubygems' unless ENV['NO_RUBYGEMS']
- gem 'rghost_barcode'
- require 'rghost_barcode'
- end
-
- module Brcobranca
- module Boleto
- module Template
- # Templates para usar com Rghost
- module Rghost2
- extend self
- include RGhost unless include?(RGhost)
- RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
- RGhost::Config::GS[:default_params] << '-dNOSAFER'
- RGhost::Config::GS[:unit]=Units::Cm
-
-
- # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
- #
- # @return [Stream]
- # @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
- # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
- def to(formato, options = {})
- modelo_generico(self, options.merge!(formato: formato))
+ require 'rghost'
+rescue LoadError
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
+ gem 'rghost'
+ require 'rghost'
+end
+
+begin
+ require 'rghost_barcode'
+rescue LoadError
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
+ gem 'rghost_barcode'
+ require 'rghost_barcode'
+end
+
+module Brcobranca
+ module Boleto
+ module Template
+ # Templates para usar com Rghost
+ module Rghost2
+ extend self
+ include RGhost unless include?(RGhost)
+ RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
+ RGhost::Config::GS[:default_params] << '-dNOSAFER'
+ RGhost::Config::GS[:unit] = Units::Cm
+
+ # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
+ #
+ # @return [Stream]
+ # @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
+ # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
+ def to(formato, options = {})
+ modelo_generico(self, options.merge!(formato: formato))
+ end
+
+ # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
+ #
+ # @return [Stream]
+ # @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
+ # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
+ def lote(boletos, options = {})
+ modelo_generico_multipage(boletos, options)
+ end
+
+ # Cria o métodos dinâmicos (to_pdf, to_gif e etc) com todos os fomátos válidos.
+ #
+ # @return [Stream]
+ # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
+ # @example
+ # @boleto.to_pdf #=> boleto gerado no formato pdf
+ def method_missing(m, *args)
+ method = m.to_s
+ if method.start_with?('to_')
+ modelo_generico(self, (args.first || {}).merge!(formato: method[3..]))
+ else
+ super
end
-
- # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
- #
- # @return [Stream]
- # @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
- # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
- def lote(boletos, options = {})
- modelo_generico_multipage(boletos, options)
- end
-
- # Cria o métodos dinâmicos (to_pdf, to_gif e etc) com todos os fomátos válidos.
- #
- # @return [Stream]
- # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
- # @example
- # @boleto.to_pdf #=> boleto gerado no formato pdf
- def method_missing(m, *args)
- method = m.to_s
- if method.start_with?('to_')
- modelo_generico(self, (args.first || {}).merge!(formato: method[3..-1]))
- else
- super
- end
- end
-
- private
-
- # Retorna um stream pronto para gravação em arquivo.
- #
- # @return [Stream]
- # @param [Boleto] Instância de uma classe de boleto.
- # @param [Hash] options Opção para a criação do boleto.
- # @option options [Symbol] :resolucao Resolução em pixels.
- # @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
- def modelo_generico(boleto, options = {})
- doc = Document.new paper: [21,29.7] # A4
- template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico2.eps')
- raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
- modelo_recibo_beneficiario(doc, boleto)
+ end
+
+ private
+
+ # Retorna um stream pronto para gravação em arquivo.
+ #
+ # @return [Stream]
+ # @param [Boleto] Instância de uma classe de boleto.
+ # @param [Hash] options Opção para a criação do boleto.
+ # @option options [Symbol] :resolucao Resolução em pixels.
+ # @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
+ def modelo_generico(boleto, options = {})
+ doc = Document.new paper: [21, 29.7] # A4
+ template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico2.eps')
+ raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
+
+ modelo_recibo_beneficiario(doc, boleto)
+ modelo_generico_template(doc, boleto, template_path)
+ modelo_generico_cabecalho(doc, boleto)
+ modelo_generico_rodape(doc, boleto)
+ # Gerando stream
+ formato = options.delete(:formato) || Brcobranca.configuration.formato
+ resolucao = options.delete(:resolucao) || Brcobranca.configuration.resolucao
+ doc.render_stream(formato.to_sym, resolution: resolucao)
+ end
+
+ # Retorna um stream para multiplos boletos pronto para gravação em arquivo.
+ #
+ # @return [Stream]
+ # @param [Array] Instâncias de classes de boleto.
+ # @param [Hash] options Opção para a criação do boleto.
+ # @option options [Symbol] :resolucao Resolução em pixels.
+ # @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
+ def modelo_generico_multipage(boletos, options = {})
+ doc = Document.new paper: [21, 29.7] # A4
+ template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico2.eps')
+ raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
+
+ boletos.each_with_index do |boleto, index|
modelo_generico_template(doc, boleto, template_path)
+ modelo_recibo_beneficiario(doc, boleto)
modelo_generico_cabecalho(doc, boleto)
modelo_generico_rodape(doc, boleto)
- # Gerando stream
- formato = (options.delete(:formato) || Brcobranca.configuration.formato)
- resolucao = (options.delete(:resolucao) || Brcobranca.configuration.resolucao)
- doc.render_stream(formato.to_sym, resolution: resolucao)
+ # Cria nova página se não for o último boleto
+ doc.next_page unless index == boletos.length - 1
end
-
- # Retorna um stream para multiplos boletos pronto para gravação em arquivo.
- #
- # @return [Stream]
- # @param [Array] Instâncias de classes de boleto.
- # @param [Hash] options Opção para a criação do boleto.
- # @option options [Symbol] :resolucao Resolução em pixels.
- # @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
- def modelo_generico_multipage(boletos, options = {})
- doc = Document.new paper: [21,29.7] # A4
- template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico2.eps')
- raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
- boletos.each_with_index do |boleto, index|
- modelo_generico_template(doc, boleto, template_path)
- modelo_recibo_beneficiario(doc, boleto)
- modelo_generico_cabecalho(doc, boleto)
- modelo_generico_rodape(doc, boleto)
- # Cria nova página se não for o último boleto
- doc.next_page unless index == boletos.length - 1
- end
- # Gerando stream
- formato = (options.delete(:formato) || Brcobranca.configuration.formato)
- resolucao = (options.delete(:resolucao) || Brcobranca.configuration.resolucao)
- doc.render_stream(formato.to_sym, resolution: resolucao)
+ # Gerando stream
+ formato = options.delete(:formato) || Brcobranca.configuration.formato
+ resolucao = options.delete(:resolucao) || Brcobranca.configuration.resolucao
+ doc.render_stream(formato.to_sym, resolution: resolucao)
+ end
+
+ # Define o template a ser usado no boleto
+ def modelo_generico_template(doc, _boleto, template_path)
+ doc.define_template(:template, template_path, x: '0.732 cm', y: '3.48 cm')
+ doc.use_template :template
+
+ doc.define_tags do
+ tag :menor, name: 'LiberationMono', size: 8
+ tag :menor2, name: 'LiberationMono', size: 6
+ tag :menor_bold, name: 'Helvetica-Bold', size: 8
+ tag :medio, name: 'Helvetica-Bold', size: 12
+ tag :maior, name: 'Helvetica-Bold', size: 13.5
end
-
- # Define o template a ser usado no boleto
- def modelo_generico_template(doc, _boleto, template_path)
- doc.define_template(:template, template_path, x: '0.732 cm', y: '3.48 cm')
- doc.use_template :template
-
- doc.define_tags do
- tag :menor, name: "LiberationMono", size: 8
- tag :menor2, name: "LiberationMono", size: 6
- tag :menor_bold, name: "Helvetica-Bold", size: 8
- tag :medio, name: "Helvetica-Bold", size: 12
- tag :maior, name: "Helvetica-Bold", size: 13.5
- end
+ end
+
+ # Monta Recibo do Beneficiário
+ def modelo_recibo_beneficiario(doc, boleto)
+ doc.moveto x: 4.28, y: 26.87
+ doc.show truncar(boleto.cedente, 90), tag: :menor
+ doc.moveto x: 4.28, y: 26.33
+ doc.show truncar(boleto.sacado, 90), tag: :menor
+ doc.moveto x: 4.28, y: 25.76
+ doc.show boleto.documento_numero, tag: :menor
+ doc.moveto x: 4.28, y: 25.20
+ doc.show boleto.nosso_numero_boleto, tag: :menor
+ doc.moveto x: 4.28, y: 24.63
+ doc.show boleto.data_vencimento.to_s_br, tag: :menor
+ doc.moveto x: 4.28, y: 24.070
+ doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :menor
+ doc.moveto x: 4.28, y: 23.49
+ doc.show boleto.agencia_conta_boleto, tag: :menor
+ doc.moveto x: 4.28, y: 22.95
+ doc.show boleto.valor_documento.to_currency, tag: :menor
+ end
+
+ # Monta Recibo do Pagador boleto
+ def modelo_generico_cabecalho(doc, boleto)
+ monta_logotipo(doc, boleto, 0.782, 19.717, 0.85)
+ doc.moveto x: 4.813, y: 19.801
+ doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :medio
+ doc.moveto x: 0.823, y: 20.942
+ doc.show boleto.codigo_barras.linha_digitavel, tag: :menor_bold
+ doc.moveto x: 1.121, y: 18.924
+ doc.show truncar(boleto.cedente, 47), tag: :menor
+ doc.moveto x: 9.9, y: 18.924
+ doc.show boleto.agencia_conta_boleto.tr(' ', ''), tag: :menor
+ doc.moveto x: 16.423, y: 18.924
+ doc.show boleto.nosso_numero_boleto, tag: :menor
+ doc.moveto x: 1.121, y: 17.984
+ doc.show boleto.documento_numero, tag: :menor
+ doc.moveto x: 14.139, y: 18.924
+ doc.show boleto.quantidade, tag: :menor
+ doc.moveto x: 7.0, y: 17.984
+ doc.show boleto.documento_cedente.formata_documento.to_s, tag: :menor
+ doc.moveto x: 10.602, y: 17.984
+ doc.show boleto.data_vencimento.to_s_br, tag: :menor
+ doc.text_area "<menor>#{boleto.valor_documento.to_currency}</menor>", width: 5.78, text_align: :right,
+ x: 14.12, y: 17.984, tag: :menor
+ doc.moveto x: 1.109, y: 17.089
+ doc.show truncar(boleto.sacado, 109), tag: :menor
+ end
+
+ # Monta o corpo e rodapé do layout do boleto
+ def modelo_generico_rodape(doc, boleto)
+ monta_logotipo(doc, boleto, 0.782, 13.9, 0.85)
+ doc.text_area "<menor_bold>#{boleto.data_vencimento&.to_s_br}</menor_bold>",
+ width: 5.786, text_align: :center, x: 14.47271, y: 13.11587
+ doc.text_area "<menor>#{boleto.agencia_conta_boleto}</menor>", width: 5.786, text_align: :center, x: 14.47271,
+ y: 12.26921
+ doc.text_area "<menor>#{boleto.nosso_numero_boleto}</menor>", width: 5.786, text_align: :center, x: 14.47271,
+ y: 11.42254
+ doc.text_area "<menor_bold>#{boleto.valor_documento.to_currency}</menor_bold>", width: 5.5, text_align: :right,
+ x: 14.47271, y: 10.56926
+ doc.moveto x: 4.813, y: 13.977
+ doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :medio
+ doc.moveto x: 6.815, y: 13.990
+ doc.show boleto.codigo_barras.linha_digitavel, tag: :maior
+ doc.moveto x: 1.121, y: 13.2
+ doc.show boleto.local_pagamento, tag: :menor
+ doc.moveto x: 1.121, y: 12.295
+ doc.show truncar(boleto.cedente, 54), tag: :menor
+ doc.moveto x: 11.307, y: 12.295
+ doc.show boleto.documento_cedente.formata_documento.to_s, tag: :menor
+ doc.moveto x: 1.112, y: 11.42
+ doc.show boleto.data_documento&.to_s_br, tag: :menor
+ doc.moveto x: 4.268, y: 11.42
+ doc.show boleto.documento_numero, tag: :menor
+ doc.moveto x: 7.471, y: 11.42
+ doc.show boleto.especie_documento, tag: :menor
+ doc.moveto x: 9.588, y: 11.42
+ doc.show boleto.aceite, tag: :menor
+ doc.moveto x: 11.660, y: 11.42
+ doc.show boleto.data_processamento&.to_s_br, tag: :menor
+ doc.moveto x: 4.62056, y: 10.56058
+ if boleto.variacao
+ doc.show "#{boleto.carteira}-#{boleto.variacao}"
+ else
+ doc.show boleto.carteira
end
-
- # Monta Recibo do Beneficiário
- def modelo_recibo_beneficiario(doc, boleto)
- doc.moveto x: 4.28, y: 26.87
- doc.show truncar(boleto.cedente, 90), tag: :menor
- doc.moveto x: 4.28, y: 26.33
- doc.show truncar(boleto.sacado, 90), tag: :menor
- doc.moveto x: 4.28, y: 25.76
- doc.show boleto.documento_numero, tag: :menor
- doc.moveto x: 4.28, y: 25.20
- doc.show boleto.nosso_numero_boleto, tag: :menor
- doc.moveto x: 4.28, y: 24.63
- doc.show boleto.data_vencimento.to_s_br, tag: :menor
- doc.moveto x: 4.28, y: 24.070
- doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :menor
- doc.moveto x: 4.28, y: 23.49
- doc.show boleto.agencia_conta_boleto, tag: :menor
- doc.moveto x: 4.28, y: 22.95
- doc.show boleto.valor_documento.to_currency, tag: :menor
+ doc.moveto x: 7.26640, y: 10.56058
+ doc.show boleto.especie
+ monta_instrucoes(doc, boleto, 0.8, 9.8)
+ pagador = "<menor>#{truncar(boleto.sacado, 75)} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}</menor>"
+ pagador += "\n<menor>#{boleto.sacado_endereco}</menor>" if boleto.sacado_endereco
+ doc.text_area pagador, width: 18, text_align: :left, x: 2.04611, y: 5.8, row_height: '0.4 cm'
+ if boleto.avalista && boleto.avalista_documento
+ avalista = "#{truncar(boleto.avalista,
+ 46)} - CPF/CNPJ: #{boleto.avalista_documento.formata_documento}"
end
-
- # Monta Recibo do Pagador boleto
- def modelo_generico_cabecalho(doc, boleto)
- monta_logotipo(doc, boleto, 0.782, 19.717, 0.85)
- doc.moveto x: 4.813, y: 19.801
- doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :medio
- doc.moveto x: 0.823, y: 20.942
- doc.show boleto.codigo_barras.linha_digitavel, tag: :menor_bold
- doc.moveto x: 1.121, y: 18.924
- doc.show truncar(boleto.cedente, 47), tag: :menor
- doc.moveto x: 9.9, y: 18.924
- doc.show boleto.agencia_conta_boleto.tr(' ', ''), tag: :menor
- doc.moveto x: 16.423, y: 18.924
- doc.show boleto.nosso_numero_boleto, tag: :menor
- doc.moveto x: 1.121, y: 17.984
- doc.show boleto.documento_numero, tag: :menor
- doc.moveto x: 14.139, y: 18.924
- doc.show boleto.quantidade, tag: :menor
- doc.moveto x: 7.0, y: 17.984
- doc.show boleto.documento_cedente.formata_documento.to_s, tag: :menor
- doc.moveto x: 10.602, y: 17.984
- doc.show boleto.data_vencimento.to_s_br, tag: :menor
- doc.text_area "<menor>#{boleto.valor_documento.to_currency}</menor>", width: 5.78, text_align: :right, x: 14.12, y: 17.984, tag: :menor
- doc.moveto x: 1.109, y: 17.089
- doc.show truncar(boleto.sacado, 109), tag: :menor
+ if avalista
+ doc.text_area "<menor2>#{avalista}</menor2>", width: 12.312, text_align: :left, x: 2.04611, y: 4.3,
+ row_height: '0.4 cm'
end
-
- # Monta o corpo e rodapé do layout do boleto
- def modelo_generico_rodape(doc, boleto)
- monta_logotipo(doc, boleto, 0.782, 13.9, 0.85)
- doc.text_area "<menor_bold>#{boleto.data_vencimento.to_s_br if boleto.data_vencimento}</menor_bold>", width: 5.786, text_align: :center, x: 14.47271, y: 13.11587
- doc.text_area "<menor>#{boleto.agencia_conta_boleto}</menor>", width: 5.786, text_align: :center, x: 14.47271, y: 12.26921
- doc.text_area "<menor>#{boleto.nosso_numero_boleto}</menor>", width: 5.786, text_align: :center, x: 14.47271, y: 11.42254
- doc.text_area "<menor_bold>#{boleto.valor_documento.to_currency}</menor_bold>", width: 5.5, text_align: :right, x: 14.47271, y: 10.56926
- doc.moveto x: 4.813, y: 13.977
- doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :medio
- doc.moveto x: 6.815, y: 13.990
- doc.show boleto.codigo_barras.linha_digitavel, tag: :maior
- doc.moveto x: 1.121, y: 13.2
- doc.show boleto.local_pagamento, tag: :menor
- doc.moveto x: 1.121, y: 12.295
- doc.show truncar(boleto.cedente,54), tag: :menor
- doc.moveto x: 11.307, y: 12.295
- doc.show boleto.documento_cedente.formata_documento.to_s, tag: :menor
- doc.moveto x: 1.112, y: 11.42
- doc.show (boleto.data_documento.to_s_br if boleto.data_documento), tag: :menor
- doc.moveto x: 4.268, y: 11.42
- doc.show boleto.documento_numero, tag: :menor
- doc.moveto x: 7.471, y: 11.42
- doc.show boleto.especie_documento, tag: :menor
- doc.moveto x: 9.588, y: 11.42
- doc.show boleto.aceite, tag: :menor
- doc.moveto x: 11.660, y: 11.42
- doc.show (boleto.data_processamento.to_s_br if boleto.data_processamento), tag: :menor
- doc.moveto x: 4.62056, y: 10.56058
- if boleto.variacao
- doc.show "#{boleto.carteira}-#{boleto.variacao}"
- else
- doc.show boleto.carteira
- end
- doc.moveto x: 7.26640, y: 10.56058
- doc.show boleto.especie
- monta_instrucoes(doc, boleto, 0.8, 9.8)
- pagador = "<menor>#{truncar(boleto.sacado,75)} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}</menor>"
- pagador += "\n<menor>#{boleto.sacado_endereco.to_s}</menor>" if boleto.sacado_endereco
- doc.text_area pagador, width: 18, text_align: :left, x: 2.04611, y: 5.8, row_height: '0.4 cm'
- avalista = "#{truncar(boleto.avalista,46)} - CPF/CNPJ: #{boleto.avalista_documento.formata_documento.to_s}" if boleto.avalista && boleto.avalista_documento
- if avalista
- doc.text_area "<menor2>#{avalista}</menor2>", width: 12.312, text_align: :left, x: 2.04611, y: 4.3, row_height: '0.4 cm'
- end
- # Gerando codigo de barra com rghost_barcode
- if boleto.codigo_barras
- doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: 1.06, y: 2.12)
- end
- # FIM Segunda parte do BOLETO
- end
+ # Gerando codigo de barra com rghost_barcode
+ return unless boleto.codigo_barras
- def truncar(string, limite)
- if string.length > limite
- string = string[0...limite].upcase + "..."
- end
- string
- end
+ doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: 1.06, y: 2.12)
- def monta_instrucoes(doc, boleto, x, y)
- lista_instrucoes = Array[
- boleto.instrucoes,
- boleto.instrucao1,
- boleto.instrucao2,
- boleto.instrucao3,
- boleto.instrucao4,
- boleto.instrucao5,
- boleto.instrucao6,
- ].reject(&:blank?)
- lista_instrucoes = lista_instrucoes.map { |i| "<menor>#{i}</menor>" }
- texto_instrucoes = lista_instrucoes.join("\n")
- doc.text_area texto_instrucoes, width: 13.547, text_align: :left, x: x, y: y, row_height: '0.4 cm'
- end
+ # FIM Segunda parte do BOLETO
+ end
- def monta_logotipo(doc, boleto, x, y, scale)
- doc.graphic do |g|
- g.scale(scale, scale)
- fator = 1/scale
- g.image boleto.logotipo, x: (x*fator), y: (y*fator)
- end
+ def truncar(string, limite)
+ string = "#{string[0...limite].upcase}..." if string.length > limite
+ string
+ end
+
+ def monta_instrucoes(doc, boleto, x, y)
+ lista_instrucoes = [
+ boleto.instrucoes,
+ boleto.instrucao1,
+ boleto.instrucao2,
+ boleto.instrucao3,
+ boleto.instrucao4,
+ boleto.instrucao5,
+ boleto.instrucao6
+ ].reject(&:blank?)
+ lista_instrucoes = lista_instrucoes.map { |i| "<menor>#{i}</menor>" }
+ texto_instrucoes = lista_instrucoes.join("\n")
+ doc.text_area texto_instrucoes, width: 13.547, text_align: :left, x: x, y: y, row_height: '0.4 cm'
+ end
+
+ def monta_logotipo(doc, boleto, x, y, scale)
+ doc.graphic do |g|
+ g.scale(scale, scale)
+ fator = 1 / scale
+ g.image boleto.logotipo, x: (x * fator), y: (y * fator)
end
end
end
end
end
-
\ No newline at end of file
+end