Correção de horario e implantação da geração de Romaneio
This commit is contained in:
42
app/services/pdf/fonte_utf8.rb
Normal file
42
app/services/pdf/fonte_utf8.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
# app/services/pdf/fonte_utf8.rb
|
||||
#
|
||||
# Registro da família DejaVu Sans (TrueType) num Prawn::Document.
|
||||
#
|
||||
# Por que existe: as fontes embutidas do Prawn (AFM/Helvetica) só aceitam o charset
|
||||
# Windows-1252 e estouram Prawn::Errors::IncompatibleStringEncoding em qualquer
|
||||
# caractere fora dele ("✓" no extrato do motorista; e, no romaneio, endereços que
|
||||
# chegam do cliente com "SÃO PAULO", "INDAIÁ", "JARDIM MIRIAM").
|
||||
#
|
||||
# Estava privado em Pdf::BasePdf, mas o motivo não tem nada a ver com o layout
|
||||
# retrato/preto-laranja da Reem — vale para todo PDF do app. Pdf::RomaneioPdf é
|
||||
# paisagem com a marca da GADE e não herda de BasePdf, então precisa do mesmo
|
||||
# registro sem arrastar o cabeçalho junto.
|
||||
module Pdf
|
||||
module FonteUtf8
|
||||
# Resolvido em tempo de CHAMADA, não de carga: Pdf::RomaneioPdf precisa ser
|
||||
# `require`-ável num container Ruby pelado (sem Rails) para a conferência de
|
||||
# layout em PNG — é o único jeito de validar PDF neste repositório, que não tem
|
||||
# Ruby local. Uma constante com Rails.root no corpo do módulo mataria isso.
|
||||
def self.dir_padrao
|
||||
if defined?(Rails) && Rails.respond_to?(:root) && Rails.root
|
||||
Rails.root.join('app', 'assets', 'fonts').to_s
|
||||
else
|
||||
File.expand_path('../../assets/fonts', __dir__)
|
||||
end
|
||||
end
|
||||
|
||||
# Como os PDFs só usam normal e :bold, mapeamos italic/bold_italic para as
|
||||
# variantes existentes — assim um :italic pedido por engano não levanta erro.
|
||||
def registrar_fonte_utf8(documento, dir = Pdf::FonteUtf8.dir_padrao)
|
||||
documento.font_families.update(
|
||||
'DejaVu' => {
|
||||
normal: File.join(dir.to_s, 'DejaVuSans.ttf'),
|
||||
bold: File.join(dir.to_s, 'DejaVuSans-Bold.ttf'),
|
||||
italic: File.join(dir.to_s, 'DejaVuSans.ttf'),
|
||||
bold_italic: File.join(dir.to_s, 'DejaVuSans-Bold.ttf')
|
||||
}
|
||||
)
|
||||
documento.font 'DejaVu'
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user