Cómo disminuir el tamaño de un archivo PDF utilizando un script en Python 3.

Es muy habitual que, para realizar una inscripción en una guardería o inscribirte en una ayuda pública necesite subir documentación escaneada en formato PDF con una limitación de tamaño. Escaneos de documentos cómo el DNI de identidad, libro de familia etc, son bastante pesados al ser documentos con pdf.

En este caso, lo mejor es comprimirlo para ocupar menos espacio y poder subirlo en la plataforma que lo soliciten Para ello, podemos utilizar una herramienta como https://1938.com .es/reducir-pdf o, como os enseñaré en este artículo, podemos usar Python 3 para realizar esta tarea sin compartir los ficheros con una web. Puedes consultar el siguiente repositorio: https://github.com/al118345/pdfconpython3

También os dejo el siguiente video explicativo: https://www.youtube.com/watch?v=Qc6WG2k5tFk

Compresión de ficheros en Python

A continuación, os voy a proporcionar los diferentes métodos necesarios para ejecutar el script en Python3.

Método compress

La función compress tiene tres parámetros, la ruta al fichero original, la ruta dónde almacenaremos el fichero comprimido y el nivel de compresión del fichero. Por ejemplo, en el caso de querer comprimir un fichero al máximo deberemos utilizar un valor de 4 o si queremos que pierda poca calidad utilizaremos un valor 1.

El método no es muy complicado. Únicamente utiliza ghostscript con las siguientes opciones:
  • -sDEVICE=pdfwrite
  • -dCompatibilityLevel=1.4
  • -dPDFSETTINGS=[0-4]
  • dNOPAUSE
  • -dQUIET
  • -dBATCH

Importante, utilizar un path de salida diferente al de la entrada. Es decir, si el nombre del fichero es x el nombre de salida puede ser x-comprimido.pdf o almacenar x en otra carpeta. No sobrescribir. Una vez realizada la tarea puedes borrar el fichero original.

Método get_ghostscript_path

La función get_ghostscript_path devuelve la ruta al ejecutable ghostscript.

Método Main

Un ejemplo básico de uso de la función compress lo podemos encontrar en el siguiente código:

En este programa recorremos todos los ficheros de una carpeta y comprimimos cada uno de los archivos pdf que vamos a encontrar. El resultado lo almacenamos en la ruta de destino.