PyMuPDF
Open-Source-Python-Bibliothek zum Verwalten von PDF-Metadaten
Probieren Sie PyMuPDF aus, eine kostenlose und Open-Source-Python-Bibliothek, um auf Metadaten von PDF-Dokumenten zuzugreifen und diese zu ändern.
Was ist PyMuPDF?
PyMuPDF, auch bekannt als Fitz, ist eine Open-Source-Python-Bibliothek, die viele Funktionen wie Parsen von PDFs, Teilen und Zusammenführen von PDFs usw., aber auf dieser Seite werden wir nur diskutieren, wie Python-Entwickler die PyMuPDF-Bibliothek verwenden können, um PDF-Metadaten-bezogene Aufgaben zu bewältigen, wie zum Beispiel:
- PDF-Metadaten lesen: PyMuPDF unterstützt den Zugriff auf Metadaten von PDF-Dokumenten, die Informationen wie Autor, Titel, Betreff und Erstellungsdatum usw. enthalten.
- PDF-Metadaten ändern: Die Bibliothek ermöglicht auch die Änderung von Metadaten von PDF-Dokumenten.
- XML-Metadaten lesen: PDF-Dokumente enthalten auch XML-Metadaten, die nicht auf Standarddokumenteigenschaften wie Autor, Titel usw. beschränkt sind und zusätzliche Metadaten enthalten können. Mit PyMuPDF können Entwickler es auch lesen.
- XML-Metadaten ändern: Entwickler können mithilfe der PyMuPDF-Bibliothek auch XML-Metadaten von PDFs ändern.
Erste Schritte mit PyMuPDF
Sie benötigen Python Version 3.8.0 oder höher, um PyMuPDF zu installieren und zu verwenden. Installieren Sie also zuerst Python und verwenden Sie dann die folgenden Befehle, um PyMuPDF mit pip und virtuelle Umgebung.
Linux
python -m venv pymupdf-venv
. pymupdf-venv/bin/activate
pip install pymupdf
Mac OS
python -m venv pymupdf-venv
. pymupdf-venv/bin/activate
pip install pymupdf
Windows
python -m venv pymupdf-venv
.\pymupdf-venv\Scripts\activate
pip install pymupdf
PDF-Metadaten lesen
Wir können Metadaten einer PDF-Datei mithilfe des metadata-Mitglieds der PyMuPDF-Bibliothek lesen, das den vollständigen Metadateninhalt des Dokuments enthält. Der folgende Codeausschnitt zeigt, wie man die Metadaten einer PDF-Datei vom metadata-Mitglied erhält:
Ausgabe
Der folgende Screenshot zeigt die mit PyMuPDF aus einem PDF abgerufenen Metadaten:
Bearbeiten Sie PDF-Metadaten
Wir können die Metadaten von PDFs mithilfe der PyMuPDF-Bibliothek bearbeiten, indem wir ein Wörterbuch mit den Feldern, die wir ändern möchten, zusammen mit ihren neuen Werten an die Methode set_metadata übergeben, wie im folgenden Codeausschnitt gezeigt:
Lesen Sie XML-Metadaten von PDFs
Mithilfe der PyMuPDF-Bibliothek können wir XML-Metadaten einer PDF-Datei abrufen. Wir verwenden die Methode get_xml_metadata, die die gesamten XML-Metadaten zurückgibt, wie im folgenden Codeausschnitt gezeigt:
Ausgabe
Der folgende Screenshot zeigt die XML-Metadaten, die mit PyMuPDF aus einer PDF-Datei abgerufen wurden:
XML-Metadaten von PDFs ändern
Mit der Methode set_xml_metadata der PyMuPDF-Bibliothek können wir die XML-Metadaten einer PDF festlegen oder ändern. Es ist nicht so einfach wie das Ersetzen der Metadaten auf Dokumentebene, da set_xml_metadata jede Zeichenfolge akzeptiert und die vollständigen XML-Metadaten durch die an sie übergebene Zeichenfolge ersetzt.
Um ein unbeabsichtigtes Löschen von Metadateninformationen zu vermeiden, rufen wir zunächst die vollständigen XML-Metadaten als String mit get_xml_metadata ab und verwenden dann zum Ersetzen die Methode replace des Strings Um schließlich die gewünschten Informationen zu erhalten, übergeben wir das komplette XML mit den geänderten Feldern an die Methode set_xml_metadata, die die gesamten XML-Metadaten des PDFs ändert. Weitere Informationen finden Sie im folgenden Codeausschnitt:
Abschluss
Zusammenfassend ist PyMuPDF ein großartiges Tool für Aufgaben im Zusammenhang mit der Metadatenmanipulation. Wir können die Metadateninformationen von PDFs einfach abrufen und ändern. Eine bemerkenswerte Schwäche liegt jedoch in der Methode set_xml_metadata. Diese Methode akzeptiert jede an sie übergebene Zeichenfolge und überschreibt damit das vorherige XML, was zu unbeabsichtigtem Informationsverlust führen kann. Um dieses Problem zu vermeiden, müssen Entwickler ihre Logik implementieren, um korrekte Änderungen in XML-Metadaten sicherzustellen.