Tengo muchas carpetas y dentro tengo muchas imágenes. Ahora quiero un PDF por carpeta para que todas las imágenes contenidas en la carpeta vayan a PDF. Tengo miles de carpetas, así que quiero algo que pueda procesar por lotes o que pueda caminar en la carpeta y comenzar a procesar cosas.

7
tej.tan 21 jun. 2011 a las 16:36

3 respuestas

La mejor respuesta

Resolvería esto con ImageMagick, y no con Python. ImageMagick tiene la herramienta de consola 'convertir'. Úselo así:

convert *.jpg foo.pdf

Ver aquí. (Depende de si usa Windows, Mac o Linux, debería ser fácil de averiguar con Google)

14
naeg 21 jun. 2011 a las 14:06

Sugeriría ejecutar bucles a través de sus documentos usando algo como esto:

def __init__(self, location):
  if os.path.isdir(location): # search directory
    for infile in glob.glob(os.path.join(directory, '*.png')):
    print 'current file is: %s' % infile

Dentro del ciclo for, sugeriría usar una biblioteca como pyPDF

0
acid.plasm 21 jun. 2011 a las 13:25

Usé este código para hacer lo mismo. Utiliza Python (2.7 no Python 3) y el paquete reportlab descargable desde aquí http: //www.reportlab .com / software / installation / y recorre todos los subdirectorios de lo que configuró "root" y crea un pdf de todos los archivos JPEG en cada carpeta.

import os
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader


root = "C:\\Users\\Harry\\" 

try:
   n = 0
   for dirpath, dirnames, filenames in os.walk(root):
       PdfOutputFileName = os.path.basename(dirpath) + ".pdf" 
      c = canvas.Canvas(PdfOutputFileName)
      if n > 0 :
           for filename in filenames:
                LowerCaseFileName = filename.lower()
                if LowerCaseFileName.endswith(".jpg"):
                     print(filename)
                     filepath    = os.path.join(dirpath, filename)
                     print(filepath)
                     im          = ImageReader(filepath)
                     imagesize   = im.getSize()
                     c.setPageSize(imagesize)
                     c.drawImage(filepath,0,0)
                     c.showPage()
                     c.save()
      n = n + 1
      print "PDF of Image directory created" + PdfOutputFileName

except:
     print "Failed creating PDF"
1
Harry Spier 17 ene. 2014 a las 05:55