Comment éditer les métadonnées pdf en ligne de commande?

83

J'ai besoin d'un outil de ligne de commande pour éditer les métadonnées de fichiers pdf.

J'utilise une tablette Aiptek MyNote Premium pour rédiger mes notes et mes minutes sur cet appareil, les importer plus tard et les convertir au format PDF automatiquement avec un simple script utilisant inkscape et ghostscript.

Existe-t-il un outil en ligne de commande pour ajouter des catégories aux métadonnées du fichier PDF afin que je puisse retrouver le fichier PDF ultérieurement (par exemple avec gnome-do) par catégories?

Mise à jour: j'ai essayé la solution avec pdftk et cela fonctionne, mais il semble que gnome-do ne s'occupe pas des métadonnées pdf. Y a-t-il un moyen de faire gnome-do pour le faire?

bdr529
la source

Réponses:

101

Essayez exiftool, il est disponible à partir du paquet libimage-exiftool-perl dans les référentiels.

Par exemple, si vous avez un fichier pdf appelé dessin.pdf et que vous souhaitez mettre à jour ses métadonnées, utilisez l’utilitaire exiftool de la manière suivante:

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

Pour une raison quelconque, le sujet saisi se retrouve dans le champ des mots-clés des métadonnées du fichier pdf. pas de problème dans certains cas, même souhaitable, cependant, cela peut être problématique, et le prévisionneur de métadonnées Nautilus ne l’affiche pas, mais le visualiseur Adobe Acrobat et le visualiseur PDF-XChange l’affiche.

Le programme créera une sauvegarde du fichier d'origine si vous n'utilisez pas le fichier; -overwrite_originalswitch, cela signifie qu’il y aura un doublon dans le dossier où se trouve le pdf mis à jour. De l'exemple ci-dessus; un fichier nommé; dessin.pdf_original sera créé.

utilisez le commutateur d'écrasement à vos risques et périls, ma suggestion est de ne pas l'utiliser et de scripter quelque chose pour déplacer ce fichier vers un meilleur emplacement juste au cas où.

Sabacon
la source
16
Notez que: " Toutes les modifications de métadonnées sont réversibles . Bien que cela soit normalement considéré comme un avantage, il peut constituer un problème de sécurité, car les anciennes informations ne sont jamais réellement supprimées du fichier."
noisette sur natty
5
@nuttyaboutnatty Si vous souhaitez purger toutes les entrées de métadonnées restantes et inutilisées, vous pouvez linéariser le fichier PDF juste après l'avoir traité avec exiftool. Ceci est décrit plus en détail dans cet article de Github .
Glutanimate
9
@nuttyaboutnatty Eh bien, bien sûr, ce n'est pas une source faisant autorité, mais c'est seulement parce que personne n'a jamais pris le temps de l'écrire. Cependant, je peux assurer que la méthode décrite par l'auteur fonctionne. Essayez-le vous-même: 1.) Prenez un PDF comportant des balises et "supprimez" toutes les métadonnées avec exiftool -overwrite_original -all:all="" file.pdf; 2.) Utiliser exiftool -PDF-update:all= file.pdfpour confirmer que des métadonnées anciennes sont toujours présentes; 3.) linéariser le fichier avec qpdf --linearize file.pdf; 4.) Vérifiez à nouveau, comme vous l'avez fait en 2.); toutes les métadonnées devraient avoir disparu;
Glutanimate
4
5.) confirme que le fichier a été purgé de toutes les métadonnées en consultant le dictionnaire PDF ( pdfinfo -meta file.pdf)
Glutanimate
1
Fonctionne parfaitement. Je souhaite régulièrement copier les métadonnées d'un fichier PDF à un autre. Dans ce cas, exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>c'est ce dont j'ai besoin (l'option -overwrite_originalécrase l'original <destfile>).
AstroFloyd
15

Vous pouvez éditer les métadonnées en utilisant pdftk. update_infoParamètre de sortie . En ce qui concerne le fichier de données, voici un exemple:

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

( Source )

Olli
la source
1
Ok, cela signifie que je dois exporter les métadonnées dans un fichier texte, les éditer et réimporter le fichier texte. Est-il possible de définir directement une seule métadonnée à partir de la ligne de commande?
bdr529
Il y en a peut-être, mais je n'ai pas pu le trouver.
Olli
pdftksemble être des caractères Unicode dans les métadonnées.
Escargot mécanique
1
J'ai eu un problème d'utilisation pdftksur de nouveaux fichiers PDF (les versions les plus récentes sont cryptées via AESV2). On dirait que c'est discontinué. exiftooltravaillait mieux.
s1lv3r
2
Pour utiliser pdftk, voici ce que vous devez faire: 1) pdftk book.pdf dump_data output report.txt2) éditer report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq
6

Utilisation de Ghostview

Créez un fichier nommé «pdfmarks» avec ce contenu:

[ /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

puis combinez ce pdfmarksfichier avec un fichier d’entrée PDF, PS ou EPS:

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

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

Serge Stroobandt
la source
0

Pour élaborer sur la pdftkméthode, ce qui est agréable, car elle vous montre tout ce qui est défini, tout en vous permettant de modifier tout ce que vous voulez, voici un script (pour votre .bashrcfichier de noms d’alias ou autre) permettant de le faire avec une seule commande. Cela crée une nouvelle version du fichier que vous souhaitez modifier, ouvre votre éditeur favori avec le fichier de métadonnées, puis implémente vos modifications et définit l'heure de création / modification du fichier sur le fichier PDF modifié de sorte qu'elle soit identique à l'original. Pour l'utiliser, après avoir ré-alimenté votre .bashrcfichier, tapez simplement

editPDFmetadata myfile.pdf

Voici l'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}
}

Placez simplement la définition ci-dessus dans le .bashrcfichier de votre dossier de départ, puis ouvrez un nouveau terminal et il sera prêt à être utilisé.

CPBL
la source