#! /usr/bin/env python3
# -*- coding: utf-8 -*-

#==============================================================================
# img2pdf.py - genera archivos pdf a partir de una imagen
#------------------------------------------------------------------------------
# FJA - fja@neocipres.com                                   Julio de 2023
#==============================================================================

import sys
from reportlab.lib.pagesizes import A4
from reportlab.lib.utils import ImageReader
from reportlab.pdfgen import canvas

__uso__ = '''
        =======================================================================
        · img2pdf.py - script que permite construir un archivo pdf a partir de
        una imagen (png, jpg, bmp, gif o pnm)
        -----------------------------------------------------------------------
        · uso: img2pdf <archivo imagen> <archivo pdf>
        =======================================================================
'''

if len(sys.argv) < 3:
    print(__uso__)
    sys.exit(0)
    
else:
    ain = sys.argv[1]
    aout = sys.argv[2]

if aout.rfind(".") != -1:
    pos = aout.rfind(".")
    aout = aout[:pos]
    aout = aout + ".pdf"

else:
    aout = aout + ".pdf"
    
try:
    x0 = 0
    y0 = 0
    ratio = False
    ancho, alto= A4
    
    c = canvas.Canvas(aout, pagesize=A4)
    img = ImageReader(ain)
    img_w, img_h = img.getSize()
    if img_w < ancho:
        x0 = (ancho - img_w) / 2
        ancho = img_w
        ratio = True
        
    if img_h < alto:
        y0 = (alto - img_h) / 2
        alto = img_h
        ratio = True
                    
    c.drawImage(img, x0, y0, width=ancho, height=alto, 
                preserveAspectRatio=ratio)
    c.save()
    
    print("\n\t => ", aout, " creado ... \n")

except Exception as e:
    print("\n\t No se ha podido generar el PDF: ", e, sys.exc_info()[0], "\n")