Nach diesem Beispiel kann ich alle Elemente in einer PDF-Datei auflisten
%Vor%Jetzt muss ich ein Nicht-Standard-Objekt aus der PDF-Datei extrahieren.
Mein Objekt ist das mit dem Namen MYOBJECT und es ist ein String.
Das Stück, das von dem Python-Skript gedruckt wird, das mich betrifft, ist:
%Vor%Die pdf-Datei ist das:
%Vor% Wie kann ich dem Wert 584
folgen, um auf meine Zeichenkette (unter pyPdf natürlich) zu verweisen?
Jedes Element in pdf.pages
ist ein Wörterbuch. Wenn Sie also davon ausgehen, dass es sich auf Seite 1 befindet, sollte pdf.pages[0]['/MYOBJECT']
das gewünschte Element sein.
Sie können versuchen, das einzeln zu drucken oder es mit help
und dir
an einer Python-Eingabeaufforderung zu platzieren, um mehr darüber zu erfahren, wie Sie die gewünschte Zeichenfolge erhalten können
Bearbeiten:
Nachdem ich eine Kopie der PDF erhalten habe, habe ich das Objekt bei pdf.resolvedObjects[0][558]['/Resources']['/Properties']['/MC0']['/MYOBJECT']
gefunden und der Wert kann über getData ()
Die folgende Funktion bietet eine allgemeinere Möglichkeit, dies zu lösen, indem rekursiv nach dem Schlüssel
gesucht wird %Vor%Ein IndirectObject bezieht sich auf ein tatsächliches Objekt (es ist wie ein Link oder ein Alias, so dass die Gesamtgröße der PDF reduziert werden kann, wenn derselbe Inhalt an mehreren Stellen erscheint). Die Methode getObject gibt Ihnen das tatsächliche Objekt.
Wenn es sich bei dem Objekt um ein Textobjekt handelt, sollten Sie mit str () oder unicode () für das Objekt die darin enthaltenen Daten abrufen.
Alternativ speichert pyPdf die Objekte im Attribut resolvedObjects. Zum Beispiel eine PDF, die dieses Objekt enthält:
%Vor%Kann mit diesem gelesen werden:
%Vor%Jehahas Methode ist gut, wenn man überall nach dem Objekt sucht. Meine Vermutung (Blick auf die PDF) ist, dass es immer an der gleichen Stelle (die erste Seite, in der 'MC0' Eigenschaft), und so eine viel einfachere Methode zum Auffinden der Zeichenfolge wäre:
%Vor%