Skip to content

Commit

Permalink
Alterado conforme : eduardocereto/pyboleto#30 , referente a nova circ…
Browse files Browse the repository at this point in the history
…ular do BC
  • Loading branch information
crsilveira committed Jul 9, 2015
1 parent f629c7f commit 53764ff
Showing 1 changed file with 15 additions and 36 deletions.
51 changes: 15 additions & 36 deletions pyboleto/pdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@
"""
pyboleto.pdf
~~~~~~~~~~~~
Classe Responsável por fazer o output do boleto em pdf usando Reportlab.
:copyright: © 2011 - 2012 by Eduardo Cereto Carvalho
:license: BSD, see LICENSE for more details.
"""
import os

Expand All @@ -21,18 +18,14 @@

class BoletoPDF(object):
"""Geração do Boleto em PDF
Esta classe é responsável por imprimir o boleto em PDF.
Outras classes podem ser implementadas no futuro com a mesma interface,
para faer output em HTML, LaTeX, ...
Esta classe pode imprimir boletos em formato de carnê (2 boletos por
página) ou em formato de folha cheia.
:param file_descr: Um arquivo ou *file-like* class.
:param landscape: Formato da folha. Usar ``True`` para boleto
tipo carnê.
"""

def __init__(self, file_descr, landscape=False):
Expand Down Expand Up @@ -60,11 +53,9 @@ def _load_image(self, logo_image):

def _drawReciboSacadoCanhoto(self, boletoDados, x, y):
"""Imprime o Recibo do Sacado para modelo de carnê
:param boletoDados: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:type boletoDados: :class:`pyboleto.data.BoletoData`
"""

self.pdfCanvas.saveState()
Expand Down Expand Up @@ -101,7 +92,7 @@ def _drawReciboSacadoCanhoto(self, boletoDados, x, y):
self.pdfCanvas.setFont('Helvetica-Bold', 6)
self.pdfCanvas.drawRightString(self.widthCanhoto,
0 * self.heightLine + 3,
'Recibo do Sacado')
'Recibo do Pagador')

# Titles
self.pdfCanvas.setFont('Helvetica', 6)
Expand All @@ -110,7 +101,7 @@ def _drawReciboSacadoCanhoto(self, boletoDados, x, y):
self.pdfCanvas.drawString(
self.space,
(((linhaInicial + 0) * self.heightLine)) + self.deltaTitle,
'Nosso Número'
u'Nosso Número'
)
self.pdfCanvas.drawString(
self.widthCanhoto - (35 * mm) + self.space,
Expand All @@ -120,7 +111,7 @@ def _drawReciboSacadoCanhoto(self, boletoDados, x, y):
self.pdfCanvas.drawString(
self.space,
(((linhaInicial + 1) * self.heightLine)) + self.deltaTitle,
'Agência/Código Cedente'
u'Agência/Código Beneficiário'
)
self.pdfCanvas.drawString(
self.widthCanhoto - (35 * mm) + self.space,
Expand Down Expand Up @@ -172,11 +163,9 @@ def _drawReciboSacadoCanhoto(self, boletoDados, x, y):

def _drawReciboSacado(self, boletoDados, x, y):
"""Imprime o Recibo do Sacado para modelo de página inteira
:param boletoDados: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:type boletoDados: :class:`pyboleto.data.BoletoData`
"""

self.pdfCanvas.saveState()
Expand Down Expand Up @@ -248,7 +237,7 @@ def _drawReciboSacado(self, boletoDados, x, y):
self.pdfCanvas.drawRightString(
self.width,
(linhaInicial + 3) * self.heightLine + 3,
'Recibo do Sacado'
'Recibo do Pagador'
)

# Titles
Expand All @@ -264,17 +253,17 @@ def _drawReciboSacado(self, boletoDados, x, y):
self.pdfCanvas.drawString(
0,
(((linhaInicial + 2) * self.heightLine)) + self.deltaTitle,
'Cedente'
'Beneficiário'
)
self.pdfCanvas.drawString(
self.width - (30 * mm) - (35 * mm) - (40 * mm) + self.space,
(((linhaInicial + 2) * self.heightLine)) + self.deltaTitle,
'Agência/Código Cedente'
'Agência/Código Beneficiário'
)
self.pdfCanvas.drawString(
self.width - (30 * mm) - (35 * mm) + self.space,
(((linhaInicial + 2) * self.heightLine)) + self.deltaTitle,
'CPF/CNPJ Cedente'
'CPF/CNPJ Beneficiário'
)
self.pdfCanvas.drawString(
self.width - (30 * mm) + self.space,
Expand All @@ -285,7 +274,7 @@ def _drawReciboSacado(self, boletoDados, x, y):
self.pdfCanvas.drawString(
0,
(((linhaInicial + 1) * self.heightLine)) + self.deltaTitle,
'Sacado')
'Pagador')
self.pdfCanvas.drawString(
self.width - (30 * mm) - (35 * mm) - (40 * mm) + self.space,
(((linhaInicial + 1) * self.heightLine)) + self.deltaTitle,
Expand All @@ -303,7 +292,7 @@ def _drawReciboSacado(self, boletoDados, x, y):
self.pdfCanvas.drawString(
0,
(((linhaInicial + 0) * self.heightLine)) + self.deltaTitle,
'Endereço Cedente'
'Endereço Beneficiário'
)
self.pdfCanvas.drawString(
self.width - (30 * mm) + self.space,
Expand Down Expand Up @@ -424,11 +413,9 @@ def _drawVerticalCorteLine(self, x, y, height):

def _drawReciboCaixa(self, boletoDados, x, y):
"""Imprime o Recibo do Caixa
:param boletoDados: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:type boletoDados: :class:`pyboleto.data.BoletoData`
"""
self.pdfCanvas.saveState()

Expand All @@ -452,10 +439,10 @@ def _drawReciboCaixa(self, boletoDados, x, y):
self.width - (45 * mm) + self.space,
y + self.space, 'Código de baixa'
)
self.pdfCanvas.drawString(0, y + self.space, 'Sacador / Avalista')
self.pdfCanvas.drawString(0, y + self.space, 'Pagador / Avalista')

y += self.heightLine
self.pdfCanvas.drawString(0, y + self.deltaTitle, 'Sacado')
self.pdfCanvas.drawString(0, y + self.deltaTitle, 'Pagador')
sacado = boletoDados.sacado

# Linha grossa dividindo o Sacado
Expand Down Expand Up @@ -515,7 +502,7 @@ def _drawReciboCaixa(self, boletoDados, x, y):
self.pdfCanvas.drawString(
0,
y + self.deltaTitle,
'Instruções'
'Instruções - INSTRUÇÕES DE RESPONSABILIDADE DO BENEFICIÁRIO. QUALQUER DÚVIDA SOBRE ESTE BOLETO, CONTATE O BENEFICIÁRIO.'
)

self.pdfCanvas.setFont('Helvetica', self.fontSizeValue)
Expand Down Expand Up @@ -676,11 +663,11 @@ def _drawReciboCaixa(self, boletoDados, x, y):
# Linha horizontal com primeiro campo Cedente
y += self.heightLine
self.__horizontalLine(0, y, self.width)
self.pdfCanvas.drawString(0, y + self.deltaTitle, 'Cedente')
self.pdfCanvas.drawString(0, y + self.deltaTitle, 'Beneficiário')
self.pdfCanvas.drawString(
self.width - (45 * mm) + self.space,
y + self.deltaTitle,
'Agência/Código cedente'
'Agência/Código Beneficiário'
)

self.pdfCanvas.setFont('Helvetica', self.fontSizeValue)
Expand Down Expand Up @@ -760,14 +747,12 @@ def _drawReciboCaixa(self, boletoDados, x, y):

def drawBoletoCarneDuplo(self, boletoDados1, boletoDados2=None):
"""Imprime um boleto tipo carnê com 2 boletos por página.
:param boletoDados1: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:param boletoDados2: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:type boletoDados1: :class:`pyboleto.data.BoletoData`
:type boletoDados2: :class:`pyboleto.data.BoletoData`
"""
y = 5 * mm
d = self.drawBoletoCarne(boletoDados1, y)
Expand All @@ -779,10 +764,8 @@ def drawBoletoCarneDuplo(self, boletoDados1, boletoDados2=None):

def drawBoletoCarne(self, boletoDados, y):
"""Imprime apenas dos boletos do carnê.
Esta função não deve ser chamada diretamente, ao invés disso use a
drawBoletoCarneDuplo.
:param boletoDados: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:type boletoDados: :class:`pyboleto.data.BoletoData`
Expand All @@ -798,10 +781,8 @@ def drawBoletoCarne(self, boletoDados, y):

def drawBoleto(self, boletoDados):
"""Imprime Boleto Convencional
Você pode chamar este método diversas vezes para criar um arquivo com
várias páginas, uma por boleto.
:param boletoDados: Objeto com os dados do boleto a ser preenchido.
Deve ser subclasse de :class:`pyboleto.data.BoletoData`
:type boletoDados: :class:`pyboleto.data.BoletoData`
Expand Down Expand Up @@ -854,10 +835,8 @@ def _formataValorParaExibir(self, nfloat):

def _codigoBarraI25(self, num, x, y):
"""Imprime Código de barras otimizado para boletos
O código de barras é otmizado para que o comprimeto seja sempre o
estipulado pela febraban de 103mm.
"""
# http://en.wikipedia.org/wiki/Interleaved_2_of_5

Expand All @@ -879,4 +858,4 @@ def _codigoBarraI25(self, num, x, y):
tracoFino = (tracoFino * comprimento) / bc.width
bc.__init__(num, barWidth=tracoFino)

bc.drawOn(self.pdfCanvas, x, y)
bc.drawOn(self.pdfCanvas, x, y)

0 comments on commit 53764ff

Please sign in to comment.