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

#==============================================================================
# unirpdf: permite unir los pdf contenidos en un directorio mediante pdftk
#------------------------------------------------------------------------------
# FJA - fja@neocipres.com               Enero de 2020 (py3 --> 10/07/23)
#==============================================================================

import fnmatch
import os
import sys
import subprocess

__uso__ = '''
            =============================
              unirpdf  [archivo salida]
            =============================\n'''

raiz = "."
patron = "*.pdf"
aout = ""
pdfs = ""

if len(sys.argv) == 2:
    if sys.argv[1] == '-h':
        print(__uso__)
        sys.exit(0)
    else:
        aout = sys.argv[1]

elif len(sys.argv) == 1:
    aout = "out.pdf"

else:
    print(__uso__)
    sys.exit(0)

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

else:
    aout = aout + ".pdf"

try:
    subprocess.call("clear")
    n = 0
    for r, d, f in os.walk(raiz):
        f.sort()
        for archivo in fnmatch.filter(f, patron):
            pdf = os.path.join(r, archivo)
            print("\t", os.path.abspath(pdf))
            pdfs = pdfs + " " + pdf
            n += 1

    cmd = "pdftk" + pdfs + " cat output " + aout

    #os.system(cmd)
    #subprocess.call(cmd, shell=True)
    proc = subprocess.run(cmd, shell=True)
    print("\n\tSalida: ", proc.stdout)
    print("\n\t %s pdf unidos en el archivo %s\n" % (str(n), aout))

except Exception as e:
    print('\n\t')
    print('\t Error: ', e, sys.exc_info()[0], '\n')
    print("\n\tError: ", proc.stderr)
    print(__uso__)