PyMuPDF

 
 

Biblioteca Python de código abierto para gestionar metadatos PDF

Pruebe PyMuPDF, una biblioteca de Python gratuita y de código abierto para acceder y modificar metadatos de documentos PDF.

¿Qué es PyMuPDF?

PyMuPDF, también conocida como Fitz, es una biblioteca de Python de código abierto que ofrece muchas funciones como analizar archivos PDF, dividir y fusionar archivos PDF, etc., pero en esta página solo discutiremos cómo los desarrolladores de Python pueden usar la biblioteca PyMuPDF para manejar tareas relacionadas con metadatos PDF como:

  • Leer metadatos PDF: PyMuPDF admite el acceso a metadatos de documentos PDF que contienen información como autor, título, tema y fecha de creación, etc.
  • Modificar metadatos PDF: La biblioteca también permite modificar metadatos de documentos PDF.
  • Leer metadatos XML: los documentos PDF también contienen metadatos XML que no se limitan a las propiedades estándar del documento, como autor, título, etc., sino que pueden tener metadatos adicionales. Con PyMuPDF, los desarrolladores también pueden leerlos.
  • Cambiar metadatos XML: Los desarrolladores también pueden cambiar los metadatos XML de los archivos PDF utilizando la biblioteca PyMuPDF.
GitHub

Estadísticas de GitHub

Nombre:
Idioma:
Estrellas:
Tenedores:
Licencia:
El repositorio se actualizó por última vez en

Introducción a PyMuPDF

Necesita la versión 3.8.0 o superior de Python para instalar y usar PyMuPDF. Por lo tanto, primero instale Python y luego use los siguientes comandos para instalar PyMuPDF en su máquina usando pip y virtual environment.

Linux


python -m venv pymupdf-venv
. pymupdf-venv/bin/activate
pip install pymupdf

Sistema operativo Mac


python -m venv pymupdf-venv
. pymupdf-venv/bin/activate
pip install pymupdf

Ventanas


python -m venv pymupdf-venv
.\pymupdf-venv\Scripts\activate
pip install pymupdf  

Leer metadatos del PDF

Podemos leer los metadatos de un PDF utilizando el miembro metadata de la biblioteca PyMuPDF, que contiene el contenido completo de metadatos del documento. El siguiente fragmento de código muestra cómo obtener los metadatos de un PDF a partir del miembro metadata:

# Import PyMuPDF library
import fitz
# Import pprint module for pretty printing
from pprint import pprint
# Open the PDF file using PyMuPDF
doc = fitz.open('doc.pdf')
# Pretty print the metadata of the opened PDF
pprint(doc.metadata)
# Close the PDF document to release resources
doc.close()

Producción

La siguiente captura de pantalla muestra los metadatos recuperados de un PDF usando PyMuPDF:

Editar metadatos de PDF

Podemos editar los metadatos de los PDF usando la biblioteca PyMuPDF pasando un diccionario que contenga los campos que queremos cambiar junto con sus nuevos valores al método set_metadata como se muestra en el siguiente fragmento de código:

# Import PyMuPDF library
import fitz
# Open the PDF file
doc = fitz.open('documentprocessing.pdf')
# Define new metadata
new_metadata = {
'author': 'Document Processing',
'title': 'Test Document',
'subject': 'Test document to review document processing libraries'
}
# Set the new metadata in the document
doc.set_metadata(new_metadata)
# Save the document with the changes
doc.save("doc.pdf")
# Close the document to release resources
doc.close()

Leer metadatos XML de archivos PDF

Podemos recuperar metadatos XML de un PDF utilizando la biblioteca PyMuPDF. Utilizamos el método get_xml_metadata que devuelve todos los metadatos XML como se muestra en el siguiente fragmento de código:

# Import the PyMuPDF module
import fitz
# Open the PDF file
doc = fitz.open("data.pdf")
# Print the XML metadata of the PDF document
print(doc.get_xml_metadata())
# Close the PDF document
doc.close()

Producción

La siguiente captura de pantalla muestra los metadatos XML recuperados de un PDF usando PyMuPDF:

Cambiar metadatos XML de archivos PDF

Podemos configurar o cambiar los metadatos XML de un PDF utilizando el método set_xml_metadata de la biblioteca PyMuPDF. No es tan sencillo como reemplazar los metadatos a nivel de documento porque set_xml_metadata aceptará cualquier cadena y reemplazará los metadatos XML completos con la cadena que se le pasa.

Para evitar la eliminación involuntaria de cualquier información de metadatos, primero obtenemos los metadatos XML completos como una cadena utilizando el método get_xml_metadata y luego utilizamos el método replace de cadena para reemplazar la información deseada. Finalmente, pasamos el XML completo con los campos modificados al método set_xml_metadata que cambia todos los metadatos XML del PDF. Consulte el siguiente fragmento de código para obtener más detalles:

# Import the PyMuPDF library
import fitz
# Open the PDF file
doc = fitz.open("documentprocessing.pdf")
# Get the current metadata as XML
xml_metadata = doc.get_xml_metadata()
# Update the creator field in the XML metadata
updated_xml_metadata = xml_metadata.replace(
'<rdf:li>Document</rdf:li>',
f'<rdf:li>Document Processing</rdf:li>'
)
# Set the updated XML metadata in the PDF document
doc.set_xml_metadata(updated_xml_metadata)
# Save the changes to a new PDF file
doc.save("data.pdf")
# Close the PDF document
doc.close()

Conclusión

En resumen, PyMuPDF es una gran herramienta para tareas relacionadas con la manipulación de metadatos. Podemos recuperar y cambiar fácilmente la información de metadatos de los archivos PDF. Sin embargo, una debilidad notable radica en el método set_xml_metadata. Este método acepta cualquier cadena que se le pase y sobrescribe el XML anterior con ella, lo que puede provocar una pérdida involuntaria de información. Para evitar este problema, los desarrolladores deben implementar su lógica para garantizar modificaciones correctas en los metadatos XML.

Productos Similares

 Español