diff --git a/pyboleto/__init__.py b/pyboleto/__init__.py index 887a342..a682442 100644 --- a/pyboleto/__init__.py +++ b/pyboleto/__init__.py @@ -1 +1 @@ -__version__ = '1.0.7' +__version__ = '1.0.9' diff --git a/pyboleto/data.py b/pyboleto/data.py index 28cede0..443f3fd 100644 --- a/pyboleto/data.py +++ b/pyboleto/data.py @@ -212,10 +212,14 @@ def barcode(self): len(value))) due_date_days = (self.data_vencimento - _EPOCH).days - if not (9999 >= due_date_days >= 0): + if not (18999 >= due_date_days >= 0): raise TypeError( "Invalid date, must be between 1997/07/01 and " - "2024/11/15") + "2049/10/13") + # Support for dates beyond 2025/02/22 + # https://forum.casadodesenvolvedor.com.br/topic/47631-desvendando-o-mist%C3%A9rio-do-fator-de-vencimento-em-boletos-al%C3%A9m-do-9999/ + if due_date_days > 9999: + due_date_days -= 9000 num = "%s%1s%04d%010d%24s" % (self.codigo_banco, self.moeda, due_date_days, diff --git a/pyboleto/pdf.py b/pyboleto/pdf.py index b2cc747..f2e4b7a 100644 --- a/pyboleto/pdf.py +++ b/pyboleto/pdf.py @@ -15,6 +15,7 @@ from reportlab.lib.colors import black from reportlab.lib.pagesizes import A4, landscape as pagesize_landscape from reportlab.lib.units import mm, cm +from reportlab.lib.utils import ImageReader from reportlab.pdfbase.pdfmetrics import stringWidth from reportlab.pdfgen import canvas @@ -45,6 +46,7 @@ def __init__(self, file_descr, landscape=False): self.font_size_value = 9 self.delta_title = self.height_line - (self.font_size_title + 1) self.delta_font = self.font_size_value + 1 + self.print_barcode = True if landscape: pagesize = pagesize_landscape(A4) @@ -227,7 +229,10 @@ def _drawReciboSacado(self, boleto_dados, x, y): self.height_line) if boleto_dados.logo_image: - logo_image_path = load_image(boleto_dados.logo_image) + if hasattr(boleto_dados.logo_image, 'read'): + logo_image_path = ImageReader(boleto_dados.logo_image) + else: + logo_image_path = load_image(boleto_dados.logo_image) self.pdf_canvas.drawImage( logo_image_path, 0, (linha_inicial + 3) * self.height_line + 3, @@ -751,7 +756,10 @@ def _drawReciboCaixa(self, boleto_dados, x, y): self.__verticalLine(60 * mm, y, self.height_line) # Numero do Banco if boleto_dados.logo_image: - logo_image_path = load_image(boleto_dados.logo_image) + if hasattr(boleto_dados.logo_image, 'read'): + logo_image_path = ImageReader(boleto_dados.logo_image) + else: + logo_image_path = load_image(boleto_dados.logo_image) self.pdf_canvas.drawImage( logo_image_path, 0, @@ -774,8 +782,9 @@ def _drawReciboCaixa(self, boleto_dados, x, y): boleto_dados.linha_digitavel ) - # Codigo de barras - self._codigoBarraI25(boleto_dados.barcode, 2 * self.space, 0) + # Código de barras + if self.print_barcode: + self._codigoBarraI25(boleto_dados.barcode, 2 * self.space, 0) self.pdf_canvas.restoreState() diff --git a/setup.py b/setup.py index 34398a5..1be0459 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ def get_version(package): ).group(1) setup( - name='python3-boleto', + name='python-boleto', version=get_version('pyboleto'), author='Trust-Code', author_email='suporte@trustcode.com.br',