Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: iso-8859-1 -*-
- ''' comprimepdf.py script para recorrer recursivamente
- un arbol de directorios y comprimir todos los archivos pdf
- en una carpeta Comprimidos creada en cada uno de los directorios
- que contengan estos archivos'''
- import os
- import sys
- from subprocess import *
- from stat import *
- def RecorreDirectorios(DirSuperior, callback):
- ''' Recorre los directorios de manera recursiva,
- ejecutando el codigo de la funcion callback por cada archivo encontrado '''
- for Archivo in os.listdir(DirSuperior):
- ruta = os.path.join(DirSuperior, Archivo)
- tipo = os.stat(ruta)[ST_MODE]
- if S_ISDIR(tipo):
- # Es un directorio, Entra en el recursivamente
- # Ver 2: aqui se puede obtener la lista de archivos mediante glob.glob
- # recorrerla y pasar cada uno de ellos como parametro a Comprime
- RecorreDirectorios(ruta, callback)
- elif S_ISREG(tipo):
- # Es un archivo, valida si es PDF
- if Archivo.endswith(".pdf") or Archivo.endswith(".PDF"):
- # Es PDF, llama a la rutina callback
- callback(ruta,Archivo,DirSuperior)
- else:
- # tipo desconocido, muestra un msg
- print 'No se reconoce el tipo: %s' % ruta
- def Comprime(ruta, Archivo, DirSuperior):
- '''evalúa si existe la carpera Comprimidos
- y guarda el PDF ya compreso en dicha carpeta'''
- # Establece la ruta de la carpeta Comprimidos
- rutaComprimidos='%s/Comprimidos' % DirSuperior
- print "rutaComprimidos: %s" % rutaComprimidos
- # Normaliza la ruta completa
- rutaComprimidos = os.path.abspath(rutaComprimidos)
- print "AbsPath Comprimidos: %s" % rutaComprimidos
- if not os.path.isdir(rutaComprimidos):
- # No existe la carpeta Comprimidos. Crear
- print "mkdir %s" % rutaComprimidos
- os.mkdir(rutaComprimidos)
- fuente = '%s/%s' % (DirSuperior, Archivo)
- fuente = os.path.abspath(fuente)
- #print "AbsPath fuente: %s" % fuente
- destino = '%s/%s' % (rutaComprimidos, Archivo)
- destino = os.path.abspath(destino)
- #print "AbsPath destino: %s" % destino
- print '*'*25, 'Comprimir ' , fuente , ' en ' , destino, '*'*25
- #gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=destino.pdf fuente.pdf
- # Crea los argumentos para GS
- args = [
- 'gs',
- '-sDEVICE=pdfwrite',
- '-dCompatibilityLevel=1.4',
- '-dPDFSETTINGS=/screen',
- '-dNOPAUSE',
- '-dBATCH',
- '-sOutputFile=%s' % destino,
- fuente
- ]
- #print args
- # Llama a GS para comprimir el PDF en rutaComprimidos
- output = Popen( args, stdout = sys.stdout, stderr = sys.stderr)
- if __name__ == '__main__':
- RecorreDirectorios('.', Comprime)
- print "Bye---"
- SystemExit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement