Advertisement
hectorgarcia

comprimepdf.py

Apr 18th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.78 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: iso-8859-1 -*-
  3.  
  4. ''' comprimepdf.py script para recorrer recursivamente
  5. un arbol de directorios y comprimir todos los archivos pdf
  6. en una carpeta Comprimidos creada en cada uno de los directorios
  7. que contengan estos archivos'''
  8.  
  9.  
  10. import os
  11. import sys
  12. from subprocess import *
  13. from stat import *
  14.  
  15.  
  16.  
  17. def RecorreDirectorios(DirSuperior, callback):
  18.   ''' Recorre los directorios de manera recursiva,
  19.  ejecutando el codigo de la funcion callback por cada archivo encontrado '''
  20.  
  21.  
  22.   for Archivo in os.listdir(DirSuperior):
  23.     ruta = os.path.join(DirSuperior, Archivo)
  24.     tipo = os.stat(ruta)[ST_MODE]
  25.     if S_ISDIR(tipo):
  26.       # Es un directorio, Entra en el recursivamente
  27.       # Ver 2: aqui se puede obtener la lista de archivos  mediante glob.glob
  28.       # recorrerla y pasar cada uno de ellos como parametro a Comprime
  29.      
  30.       RecorreDirectorios(ruta, callback)
  31.     elif S_ISREG(tipo):
  32.       # Es un archivo, valida si es PDF
  33.       if Archivo.endswith(".pdf") or Archivo.endswith(".PDF"):
  34.         # Es PDF, llama a la rutina callback
  35.         callback(ruta,Archivo,DirSuperior)
  36.     else:
  37.       # tipo desconocido, muestra un msg
  38.       print 'No se reconoce el tipo: %s' % ruta
  39.      
  40. def Comprime(ruta, Archivo, DirSuperior):
  41.   '''evalúa si existe la carpera Comprimidos
  42.  y guarda el PDF ya compreso en dicha carpeta'''
  43.  
  44.   # Establece la ruta de la carpeta Comprimidos
  45.   rutaComprimidos='%s/Comprimidos' % DirSuperior  
  46.   print  "rutaComprimidos: %s" % rutaComprimidos
  47.  
  48.   # Normaliza la ruta completa
  49.   rutaComprimidos = os.path.abspath(rutaComprimidos)  
  50.   print "AbsPath Comprimidos: %s" % rutaComprimidos
  51.  
  52.  
  53.   if not os.path.isdir(rutaComprimidos):
  54.     # No existe la carpeta Comprimidos. Crear
  55.     print "mkdir %s" % rutaComprimidos
  56.     os.mkdir(rutaComprimidos)
  57.    
  58.    
  59.   fuente = '%s/%s' % (DirSuperior, Archivo)
  60.   fuente = os.path.abspath(fuente)
  61.   #print "AbsPath fuente: %s" % fuente
  62.  
  63.   destino = '%s/%s' % (rutaComprimidos, Archivo)
  64.   destino = os.path.abspath(destino)
  65.   #print "AbsPath destino: %s" % destino
  66.  
  67.    
  68.  
  69.   print '*'*25, 'Comprimir ' , fuente , ' en ' , destino, '*'*25
  70.   #gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=destino.pdf fuente.pdf
  71.  
  72.   # Crea los argumentos para GS
  73.   args = [
  74.     'gs',
  75.     '-sDEVICE=pdfwrite',
  76.     '-dCompatibilityLevel=1.4',
  77.     '-dPDFSETTINGS=/screen',
  78.     '-dNOPAUSE',
  79.     '-dBATCH',
  80.     '-sOutputFile=%s' % destino,
  81.     fuente
  82.     ]
  83.  
  84.    
  85.   #print args  
  86.   # Llama a GS para comprimir el PDF en  rutaComprimidos
  87.   output = Popen( args, stdout = sys.stdout, stderr = sys.stderr)
  88.  
  89. if __name__ == '__main__':
  90.   RecorreDirectorios('.', Comprime)
  91.   print "Bye---"
  92.   SystemExit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement