Advertisement
Guest User

comprimepdf.py

a guest
Apr 17th, 2013
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.02 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: iso-8859-1 -*-
  3. ''' comprimepdf.py script para recorrer recursivamente
  4. un arbol de directorios y comprimir todos los archivos pdf
  5. en una carpeta Comprimidos creada en cada uno de los directorios
  6. que contengan estos archivos. CON ERRORES'''
  7.  
  8. import os
  9. import sys
  10. import ghostscript
  11.  
  12. from stat import *
  13.  
  14.  
  15. def RecorreDirectorios(DirSuperior, callback):
  16.   ''' Recorre los directorios de manera recursiva,
  17.  ejecutando el codigo de la funcion callback por cada archivo encontrado '''
  18.  
  19.  
  20.   for Archivo in os.listdir(DirSuperior):
  21.     ruta = os.path.join(DirSuperior, Archivo)
  22.     tipo = os.stat(ruta)[ST_MODE]
  23.     if S_ISDIR(tipo):
  24.       # Es un directorio, valida si contiene PDF
  25.      
  26.       RecorreDirectorios(ruta, callback)
  27.     elif S_ISREG(tipo):
  28.       # Es un archivo, valida si es PDF
  29.       if Archivo.endswith(".pdf") or Archivo.endswith(".PDF"):
  30.         # Es PDF, llama a la rutina callback
  31.         callback(ruta,Archivo,DirSuperior)
  32.     else:
  33.       # tipo desconocido, muestra un msg
  34.       print 'No se reconce el tipo: %s' % ruta
  35.      
  36. def Comprime(ruta, Archivo, DirSuperior):
  37.   '''evalΓΊa si existe la carpera Comprimidos
  38.  y guarda el PDF ya compreso en dicha carpeta'''
  39.  
  40.   # Establece la ruta de la carpeta Comprimidos
  41.   rutaComprimidos='%s/Comprimidos' % DirSuperior  
  42.  
  43.  
  44.  
  45.   if "./" in rutaComprimidos:
  46.     # Elimina los ./ al inicio de rutaComprimidos
  47.     rutaComprimidos = rutaComprimidos.replace("./","")
  48.     print "Nueva RutaComprimidos: %s" % rutaComprimidos
  49.  
  50.   if not os.path.isdir(rutaComprimidos):
  51.     # No existe la carpeta Comprimidos. Crear
  52.     print "mkdir %s" % rutaComprimidos
  53.     os.mkdir(rutaComprimidos)
  54.    
  55.   # genera la ruta del archivo fuente, como parametro para gs
  56.   if DirSuperior ==".":
  57.     # Cuando el archivo estΓ‘ en el directorio raiz (relativo al .py)
  58.     # establece el origen como el mismo nombre
  59.     fuente = '"%s"' % Archivo
  60.   else:
  61.     # Crea la ruta, sin los ./ que tenga DirSuperior
  62.     fuente = '%s/"%s"' % (DirSuperior.replace("./",""), Archivo)
  63.    
  64.  
  65.  
  66.   print "fuente con espacios %s" % fuente
  67.   fuente = fuente.replace(" ", "\ ")
  68.    
  69.  
  70.   destino = '%s/"%s"' % (rutaComprimidos, Archivo)  
  71.   print "Destino con espacios: %s" % destino  
  72.   destino = destino.replace(" ", "\ ")
  73.  
  74.   #fuente = '"%s"' % fuente
  75.   #destino = '"%s"' % destino
  76.   print "Archivo fuente %s" % fuente  
  77.   print "Archivo Destino: %s" % destino
  78.  
  79.  
  80.   # Llama a GS para comprimir el PDF en  rutaComprimidos
  81.   print 'Comprimir ' , fuente , ' en ' , destino
  82.   #gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=destino.pdf fuente.pdf
  83.  
  84.  
  85.  
  86.   args = [
  87.     "ps2pdf",
  88.     "-sDEVICE=pdfwrite",
  89.     "-dCompatibilityLevel=1.4",
  90.     "-dPDFSETTINGS=/screen",
  91.     "-dNOPAUSE",
  92.     "-dBATCH",
  93.     "-sOutputFile=%s %s" % (destino, fuente)    
  94.     ]
  95.    
  96.   print args
  97.   ghostscript.Ghostscript(*args)
  98.  
  99.  
  100. if __name__ == '__main__':
  101.   RecorreDirectorios('.', Comprime)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement