Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



domingo, 15 de abril de 2018

Script Python: Convertir los archivos png de un directorio en un unico archivo pdf.

Script Python: Convertir los archivos png de un directorio en un único archivo pdf.

El siguiente script en python realiza las siguientes tareas:
- Obtener una lista de los ficheros .png del directorio donde se ejecuta el script.
- Convertir cada fichero .png de la lista obtenida, en pdf usando el comando convert
- Convierte todos los pdf  en un único fichero pdf usando el comando pdftk

Nota:
Los nombres de los pdf que se crean son extraídos de los nombres de los fichero png.
Y deben de estar instalado los programas ImageMagick y pdftk

El Script:

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

import os,sys
#Variable para la ruta al directorio
path = '.'

#Lista vacia para incluir los ficheros
lstFiles = []

#Lista con todos los ficheros del directorio:
lstDir = os.walk(path)   #os.walk()Lista directorios y ficheros


#Crea una lista de los ficheros png que existen en el directorio y los incluye a la lista.
for root, dirs, files in lstDir:
    for fichero in files:
        (nombreFichero, extension) = os.path.splitext(fichero)
        if(extension == ".png"):
            lstFiles.append(nombreFichero+extension)
            #print (nombreFichero+extension)
           
print(lstFiles)         
print ('Listado Finalizado')
print "longitud de la lista = ", len(lstFiles)
nombrepdf=lstFiles[1]
nombrepdf=nombrepdf[0:7]

#2º Parte: convierte cada  png de la lista en  pdf
for i in lstFiles:
        comando="convert "+i+" "+i[0:12]+".pdf"
        salida=os.system(comando)

#3º convierto en un unico pdf, todos los pdf generados
salida=os.system("pdftk *.pdf cat output "+ nombrepdf+".pdf") 
print ("Convertido todos los .png a un unico .pdf: "+ nombrepdf+".pdf")

#Nota: 26/04/2018
#He añadido un par de lineas más para eliminar los ficheros auxiliares .pdf que crea el script. Asi solo quedaria un unico pdf unificado.

#borrado de pdf auxiliares...
for i in lstFiles:
        comando=i[0:12]+".pdf"
        salida=os.remove(comando)


Enlace de descarga: alojado en google drive

ref:
http://www.mclibre.org/consultar/python/lecciones/python-listas.html
http://python-para-impacientes.blogspot.com.es/2014/02/ejecutar-un-comando-externo.html
https://nideaderedes.urlansoft.com/2013/12/19/existe-substring-substr-o-algo-similar-en-python/