Wie bearbeite ich PDF-Metadaten von der Kommandozeile aus?

83

Ich benötige ein Kommandozeilen-Tool zum Bearbeiten von Metadaten von PDF-Dateien.

Ich verwende ein Aiptek MyNote Premium-Tablet, um meine Notizen und Protokolle auf diesem Gerät zu schreiben, sie später zu importieren und sie mit einem einfachen Skript unter Verwendung von Inkscape und Ghostscript automatisch in PDF umzuwandeln.

Gibt es ein Kommandozeilen-Tool, um den Metadaten des PDF einige Kategorien hinzuzufügen, damit ich das PDF später (z. B. mit gnome-do) nach Kategorien finden kann?

Update: Ich habe die Lösung mit pdftk ausprobiert und sie funktioniert, aber anscheinend kümmert sich gnome-do nicht um PDF-Metadaten. Gibt es eine Möglichkeit, Gnome-do dazu zu bringen?

bdr529
quelle

Antworten:

101

Probieren Sie exiftool aus, es ist im Paket libimage-exiftool-perl in den Repositorys verfügbar.

Wenn Sie beispielsweise eine PDF-Datei mit dem Namen drawing.pdf haben und deren Metadaten aktualisieren möchten, verwenden Sie das Dienstprogramm exiftool folgendermaßen:

exiftool -Title="This is the Title" -Author="Happy Man" -Subject="PDF Metadata" drawing.pdf

Aus irgendeinem Grund landet der eingegebene Betreff im Schlüsselwortfeld der Metadaten in der PDF-Datei. In einigen Fällen kein Problem, auch wenn dies wünschenswert ist, kann dies problematisch sein, und der Nautilus-Metadaten-Vorschau-Editor zeigt dies nicht an, wohingegen Adobe Acrobat Viewer und PDF-XChange Viewer dies tun.

Das Programm erstellt eine Sicherungskopie der Originaldatei, wenn Sie das nicht verwenden. -overwrite_originalSchalter, dies bedeutet, dass ein Duplikat in dem Ordner vorhanden ist, in dem sich das aktualisierte PDF befindet. Aus obigem Beispiel; eine Datei mit dem Namen; drawing.pdf_original wird erstellt.

Verwenden Sie den Überschreibungsschalter auf eigenes Risiko. Ich empfehle, ihn nicht zu verwenden und ein Skript zu erstellen, um diese Datei für alle Fälle an einen besseren Ort zu verschieben.

Sabacon
quelle
16
Beachten Sie Folgendes: " Alle Metadatenbearbeitungen können rückgängig gemacht werden . Dies wird normalerweise als Vorteil angesehen, stellt jedoch ein potenzielles Sicherheitsproblem dar, da alte Informationen niemals tatsächlich aus der Datei gelöscht werden."
verrückt nach natty
5
@nuttyaboutnatty Wenn Sie alle verbleibenden und nicht verwendeten Metadateneinträge löschen möchten, können Sie die PDF-Datei direkt nach der Verarbeitung mit exiftool linearisieren. Dies wird detaillierter in diesem Github-Kern beschrieben .
Glutanimate
9
@nuttyaboutnatty Nun, natürlich ist es keine maßgebliche Quelle, aber das liegt nur daran, dass sich niemand die Zeit genommen hat, eine zu schreiben. Ich kann jedoch versichern, dass die vom Autor beschriebene Methode funktioniert. Probieren Sie es selbst aus: 1.) Nehmen Sie ein PDF mit einigen Tags und "löschen" Sie alle Metadaten mit exiftool -overwrite_original -all:all="" file.pdf; 2.) Mit exiftool -PDF-update:all= file.pdfbestätigen, dass noch alte Metadaten vorhanden sind; 3.) linearisiere die Datei mit qpdf --linearize file.pdf; 4.) Überprüfen Sie noch einmal, wie Sie es in 2.) getan haben; Alle Metadaten sollten verschwunden sein.
Glutanimate
4
5.) Bestätigen Sie, dass die Datei von allen Metadaten pdfinfo -meta file.pdf
befreit wurde,
1
Funktioniert perfekt. Ich möchte regelmäßig die Metadaten von einer PDF-Datei in eine andere kopieren. In diesem Fall exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>ist dies erforderlich (die Option -overwrite_originalüberschreibt das Original <destfile>).
AstroFloyd
15

Sie können Metadaten mit bearbeiten pdftk. Check out - update_infoParameter. Im Folgenden finden Sie ein Beispiel für eine Datendatei:

InfoKey: Title
InfoValue: Mt-Djing: multitouch DJ table
InfoKey: Subject
InfoValue: Dissertation for Master degree
InfoKey: Keywords
InfoValue: DJing, NUI, multitouch, user-centered design
InfoKey: Author
InfoValue: Pedro Lopes

( Quelle )

Olli
quelle
1
Ok, das heißt, ich muss die Metadaten in eine Textdatei exportieren, sie bearbeiten und die Textdatei erneut importieren. Gibt es eine Möglichkeit, einzelne Metadaten direkt über die Befehlszeile festzulegen?
bdr529
Es mag sein, aber ich konnte es nicht finden.
Olli
pdftkscheint Unicode-Zeichen in den Metadaten.
Mechanische Schnecke
1
Ich hatte ein Problem mit pdftkneuen PDFs (neuere Versionen werden über AESV2 verschlüsselt). Scheint, als würde es eingestellt. exiftoolfunktionierte besser.
S1LV3R
2
Um pdftk zu verwenden, müssen Sie Folgendes tun: 1) pdftk book.pdf dump_data output report.txt2) report.txt bearbeiten 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq
6

Ghostview verwenden

Erstellen Sie eine Datei mit dem Namen "pdfmarks" mit folgendem Inhalt:

[ /Title (Document title)
  /Author (Author name)
  /Subject (Subject description)
  /Keywords (comma, separated, keywords)
  /ModDate (D:20061204092842)
  /CreationDate (D:20061204092842)
  /Creator (application name or creator note)
  /Producer (PDF producer name or note)
  /DOCINFO pdfmark

Kombinieren Sie diese pdfmarksDatei dann mit einer PDF-, PS- oder EPS-Eingabedatei:

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks

Quelle: http://milan.kupcevic.net/ghostscript-ps-pdf/

Serge Stroobandt
quelle
0

Um die pdftkMethode zu erläutern , die schön ist, weil sie Ihnen alles zeigt, was gerade eingestellt wird, und Ihnen gleichzeitig erlaubt, alles zu ändern, was Sie möchten, finden Sie hier ein Skript (für Ihre .bashrcoder eine andere Aliase-Datei), das Sie mit einem Befehl ausführen können. Dadurch wird eine neue Version der zu bearbeitenden Datei erstellt, Ihr bevorzugter Editor wird mit der Metadatendatei geöffnet. Anschließend werden Ihre Änderungen implementiert und die Erstellungs- / Änderungszeit der Datei für die geänderte PDF-Datei wird auf die gleiche Zeit wie für das Original festgelegt. Um es zu verwenden, geben Sie nach dem Resourcing Ihrer .bashrcDatei einfach ein

editPDFmetadata myfile.pdf

Hier ist der Alias:

editPDFmetadata() {
OUTPUT="${1}-new.pdf"
METADATA="tmp${1}-report.txt"
pdftk ${1} dump_data output $METADATA
$EDITOR $METADATA
pdftk ${1} update_info $METADATA  output $OUTPUT
touch -r ${1} ${OUTPUT}
}

Legen Sie einfach die obige Definition in die .bashrcDatei in Ihrem Home-Ordner, öffnen Sie dann ein neues Terminal und es ist einsatzbereit.

CPBL
quelle