Código fuente en Python de una aplicación de consola completa que permite obtener los metadatos de un fichero PDF (autor, asunto, título, creador, productor, fecha de creación, fecha de modificación, número de páginas) y permite limpiar los metadatos o modificarlos, introduciendo unos personalizados.

Código fuente de la aplicación Python que obtiene y modifica los metadatos de un fichero PDF

El código fuente completo, que se puede copiar y pegar en un fichero de texto con el nombre metaPDF.py, será:

La descarga del fichero metaPDF.py completo:

La aplicación metaPDF ha sido diseñada para poder ejecutarse desde otra aplicación, devolviendo los siguientes códigos de retorno según el resultado de su ejecución:

  • 0: ejecución correcta, se eliminan/modifican/muestran los metadatos del fichero PDF.
  • 100: no existe el fichero PDF origen.
  • 101: el fichero destino está abierto o no tiene permisos para escribir en la carpeta destino.
  • 102: se ha producido un error al generar el fichero PDF.
  • 103: no se han realizado cambios en el PDF, el fichero de salida existe y no se ha incluido el parámetro «reemplazar».
  • 1: error no capturado en la aplicación.

Probando la aplicación metaPDF en Python para limpiar, mostrar y modificar los metadatos de un fichero PDF

Se trata de una aplicación de línea de comandos (de consola), por lo que abriremos una ventana de MS-DOS (Símbolo de sistema) para el caso de Windows o una ventana de terminal de shell de comandos en el caso de Linux. El código fuente está probado y funciona tanto en equipos Windows como Linux.

Para ejecutar la aplicación metaPDF.py, necesitaremos tener instalado Python en el equipo. En el siguiente enlace explicamos cómo instalarlo en Linux:

Accederemos a la carpeta donde tengamos el fichero metaPDF.py, por ejemplo en D:\ProyectoA\Python\metaPDF:

Para ejecutar la aplicación, usaremos el siguiente comando:

Si recibimos este error:

Indica que no tenemos instalado el módulo «pypdf», por lo que tendremos que instalarlo con el comando:

Ahora sí nos funcionará la ejecución de la aplicación, por ejemplo, para mostrar los argumentos que soporta, ejecutaremos:

Mostrar los metadatos de un fichero pdf con metaPDF

Vamos a realizar una primera prueba, ejecutaremos la aplicación metaPDF con los argumentos necesarios para que obtenga y muestre por pantalla los metadatos del fichero pdf de ejemplo D:\Documentos\mi_pdf.pdf:

Como podemos comprobar, la aplicación metaPDF funciona correctamente, mostrando los metadatos del fichero PDF:

Título: Documento PDF de prueba por proyectoa.com – Título
Asunto: Documento PDF de prueba por proyectoa.com – Asunto
Autor: ProyectoA
Creador: PDFCreator Version 1.5.1
Productor: GPL Ghostscript 9.05
Fecha creación: 2024-01-19 10:59:39+01:00
Fecha modificación: 2024-01-19 10:59:39+01:00
Número de páginas: 6

Podemos comprobar que son correctos, abriendo la aplicación Acrobat Reader y mostrando las propiedades del documento (Menú – Propiedades del documento):

La aplicación también permite que se muestren los metadatos del PDF pero en formato JSON, usando este comando:

Es el mismo que el anterior, quitando el argumento -v (verbose), nos devolverá:

Limpiar los metadatos de un documento PDF con metaPDF

Como es sabido, los metadatos de los ficheros PDF pueden suponer un alto riesgo de fuga de información. A nivel de seguridad informática, en muchas ocasiones el usuario no es consciente de la información sensible que puede almacenarse en los metadatos (nombre completo del usuario, correo electrónico, DNI, nick de acceso al equipo, direcciones IP, nombres de impresoras de la organización, etc.). Por ello, es muy recomendable disponer de alguna herramienta que permita limpiar (vaciar) estos metadatos.

metaPDF permite realizar la limpieza de los metadatos de un fichero PDF. Para limpiar los metadatos del fichero pdf anterior (D:\Documentos\mi_pdf.pdf) y crear una copia del fichero con los metadatos limpios (en D:\Documentos\mi_pdf_limpio.pdf), ejecutaremos este comando:

Si hemos indicado el argumento -v, nos mostrará el mensaje:

Metadatos del fichero D:\Documentos\mi_pdf_limpio.pdf modificados correctamente

En realidad, lo que ha hecho la aplicación metaPDF es crear una copia del fichero origen con los metadatos vacíos. El fichero origen no lo ha modificado. Si comprobamos los metadatos del fichero generado mi_pdf_limpio.pdf veremos que están vacíos:

Si queremos limpiar los metadatos del fichero original directamente, sin generar una copia, usaremos el comando:

Quitando el fichero destino y añadiendo el argumento -r (reemplazar). Si hemos usado el argumento -v, nos mostrará el mensaje:

Metadatos del fichero D:\Documentos\mi_pdf_limpio.pdf modificados correctamente

Comprobaremos que, efectivamente, se han limpiado los metadatos del fichero PDF original D:\Documentos\mi_pdf.pdf :

La gran ventaja de que se trata de una aplicación de línea de comandos que admite argumentos es que se podría programar un script que usara la herramienta metaPDF para limpiar todos los metadatos de todos los ficheros PDF que se desee de forma automatizada. Sería suficiente con realizar un script que liste todos los PDF de una ubicación y vaya ejecutando la herramienta metaPDF por cada uno de ellos.

Modificar los metadatos de un fichero PDF con metaPDF

La herramienta metaPDF también permite modificar los metadatos de un fichero PDF, pasándoselos como argumento. Un ejemplo, para modificar los metadatos del fichero PDF D:\Documentos\mi_pdf.pdf, estableciéndole los siguientes metadatos:

  • Título: Título generado con metaPDF.
  • Asunto: Asunto generado con metaPDF.
  • Autor: Autor generado con metaPDF.
  • Productor: Productor generado con metaPDF.
  • Aplicación: Aplicación generada con metaPDF.

Usaremos este comando:

Comprobaremos que, efectivamente, los metadatos del fichero PDF se han modificado por los pasados como argumento:

Descarga del código fuente y la aplicación portable para Windows y para Linux

Desde el siguiente enlace podéis descargar tanto el fichero de código fuente Python (metaPDF.py) como el ejecutable portable para Windows: metaPDF.exe y para Linux meetaPDF: