#!/bin/bash
# pdf-metadaten-leeren.sh © michael_squire (ubuntuusers.de) 2013-01-18
# Lizenz: Creative Commons Namensnennung 3.0 Unported 
# Hilfetext: siehe letzte 12 Zeilen dieses Skripts

# Hilfetext ausgeben (letzte 12 Zeilen dieses Skripts) falls Skript irrtümlicherweise mit Parametern gestartet wurde:
if [ $1 ]; then sed -e :a -e '$q;N;13,$D;ba' $0; exit 127; fi

if [ -f ./*.pdf ] ; then
  mkdir ./temp # Temporäres Verzeichnis erzeugen 
  if [ ! -d ./PDFs-ohne-Metadaten ] ; then mkdir ./PDFs-ohne-Metadaten; fi #  Zielverzeichnis erzeugen, falls nicht schon vorhanden
  cp ./*.pdf ./PDFs-ohne-Metadaten # alle PDFs des aktuellen Verzeichnis ins Zielverzeichnis kopieren
  echo ... Kopiere PDFs in den Ordner `pwd`"/PDFs-ohne-Metadaten/" ...
  else echo pdf-metadaten-leeren.sh: Keine PDFs im aktuellen Verzeichnis `pwd` gefunden
  rm -r ./temp 2>/dev/null # Temporäre Daten löschen
  exit 1
fi

# Zur Verarbeitung der Dateinamen werden vorübergehend die Leerzeichen in den Dateinamen durch Unterstriche ersetzt:
for DATEI in ./PDFs-ohne-Metadaten/*.pdf;     do     rename "s/ /_/g" "$DATEI" 2>/dev/null;     done

for i in $( find ./PDFs-ohne-Metadaten -type f -name "*.pdf" ); # Dateiname wird in Variable i geschrieben
do
  DATEINAME=`basename $i`
  DATEINAME_MIT_LEERZEICHEN=`echo $DATEINAME | sed -e "s/_/ /g"`

  cp --remove-destination ./PDFs-ohne-Metadaten/$DATEINAME ./temp/temp.pdf # Datei zur verarbeitung ins temporäre Verzeichnis kopieren

  # Temporäre Datei mit leeren Metadaten für das aktuell verarbeitete PDF erzeugen (die echo-Konstruktion bewirkt mehrere Zeilen änlich einem "here document"):
  ( echo InfoKey: Author; echo InfoValue:; echo InfoKey: Company; echo InfoValue:; echo InfoKey: CreationDate; echo InfoValue:; echo InfoKey: Creator; echo InfoValue:; echo InfoKey: ModDate; echo InfoValue:; echo InfoKey: Producer; echo InfoValue:; echo InfoKey: SourceModified; echo InfoValue:; echo InfoKey: Title; echo InfoValue: $DATEINAME_MIT_LEERZEICHEN ) > ./temp/blank-metadata.txt

  pdftk ./temp/temp.pdf update_info ./temp/blank-metadata.txt output $i 2>/dev/null # Geänderte Metadaten ins kopierte PDF und in Datei schreiben

  echo ... Leere Metadaten für Kopie von $DATEINAME_MIT_LEERZEICHEN ... # Feedback an die Kommandozeile

done

# Leerzeichen in Dateinamen wiederherstellen:
for DATEI in ./PDFs-ohne-Metadaten/*.pdf;     do     rename "s/_/ /g" "$DATEI" 2>/dev/null;     done

unset i DATEINAME DATEINAME_MIT_LEERZEICHEN DATEI # Variablen löschen
rm -r ./temp # Temporäre Daten löschen

exit 0

# Hilfetext:
pdf-metadaten-leeren.sh: Bitte ohne Parameter starten

Anleitung:
 Dieses Skript ins Verzeichnis der PDFs kopieren und dort ausführen.

Verwendung:
 ./pdf-metadaten-leeren.sh

Dieses Skript kopiert alle PDFs des aktuellen Ordners in einen Unterordner ./PDFs-ohne-Metadaten/
und entfernt mit pdftk die Metadaten dieser Kopien.
Der Titel ("Title") in den Metadaten wird jeweils durch den Dateinamen ersetzt.
Die Originaldateien werden nicht verändert.
