Come modificare i metadati pdf dalla riga di comando?


83

Ho bisogno di uno strumento da riga di comando per modificare i metadati dei file pdf.

Sto usando un tablet Aiptek MyNote Premium per scrivere note e minuti su questo dispositivo, importarli in un secondo momento e convertirli automaticamente in pdf con un semplice script usando inkscape e ghostscript.

Esiste uno strumento da riga di comando per aggiungere alcune categorie ai metadati del pdf, quindi posso trovare il pdf in seguito (ad es. Con gnome-do) per categorie?

Aggiornamento: ho provato la soluzione con pdftk e funziona, ma sembra che gnome-do non si occupi dei metadati pdf. C'è un modo per ottenere gnome-do per farlo?

Risposte:


101

Prova exiftool, è disponibile dal pacchetto libimage-exiftool-perl nei repository.

Ad esempio, se hai un file pdf chiamato drawing.pdf e vuoi aggiornarne i metadati, usa l'utilità exiftool in questo modo:

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

Per qualche motivo il Soggetto inserito finisce nel campo delle parole chiave dei metadati nel file pdf. non è un problema in alcuni casi, anche desiderabile, tuttavia, questo può essere problematico, evince e l'anteprima di metadati nautilus non lo mostra, ma il visualizzatore Adobe Acrobat e il visualizzatore PDF-XChange lo fanno.

Il programma creerà un backup del file originale se non si utilizza; -overwrite_originalswitch, questo significa che esiste un duplicato nella cartella in cui si trova il pdf aggiornato. Dall'esempio sopra; un file chiamato; drawing.pdf_original verrà creato.

usa l'opzione di sovrascrittura a tuo rischio, il mio consiglio è di non usarlo e di scrivere qualcosa per spostare questo file in una posizione migliore per ogni evenienza.


16
Si noti che: " Tutte le modifiche ai metadati sono reversibili . Sebbene questo sia normalmente considerato un vantaggio, si tratta di un potenziale problema di sicurezza perché le informazioni precedenti non vengono mai effettivamente eliminate dal file."
matto per natty

5
@nuttyaboutnatty se si desidera eliminare tutte le voci di metadati rimanenti e inutilizzate, è possibile linearizzare il file PDF subito dopo averlo elaborato con exiftool. Questo è descritto più dettagliatamente in questa sintesi di Github .
Glutanimate,

9
@nuttyaboutnatty Beh, ovviamente non è una fonte autorevole, ma è solo perché nessuno ha mai avuto il tempo di scriverne uno. Tuttavia, posso assicurare che il metodo descritto dall'autore funziona. Provalo tu stesso: 1.) Prendi un PDF con alcuni tag ed "elimina" tutti i metadati con exiftool -overwrite_original -all:all="" file.pdf; 2.) Utilizzare exiftool -PDF-update:all= file.pdfper confermare che sono ancora presenti metadati vecchi; 3.) linearizzare il file con qpdf --linearize file.pdf; 4.) Controlla di nuovo, come hai fatto in 2.); tutti i metadati dovrebbero essere spariti;
Glutanimate,

4
5.) confermare che il file è stato eliminato da tutti i metadati guardando il dizionario PDF ( pdfinfo -meta file.pdf)
Glutanimate,

1
Funziona perfettamente. Voglio regolarmente copiare i metadati da un PDF a un altro, nel qual caso exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>è quello che mi serve (l'opzione -overwrite_originalsovrascrive l'originale <destfile>).
AstroFloyd,

15

Puoi modificare i metadati usando pdftk. Dai un'occhiata al update_infoparametro. Per quanto riguarda il file di dati, di seguito è riportato un esempio:

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

( Fonte )


1
Ok, questo significa che devo esportare i metadati in un file di testo, modificarli e reimportare il file di testo. C'è un modo per impostare direttamente un singolo metadata dalla riga di comando?
bdr529,

Potrebbe esserci, ma non sono riuscito a trovarlo.
Olli,

pdftksembra ai caratteri Unicode nei metadati.
Lumaca meccanica,

1
Ho avuto qualche problema con pdftkl' utilizzo di nuovi pdf (le versioni più recenti sono crittografate tramite AESV2). Sembra interrotto. exiftoolstava funzionando meglio.
s1lv3r,

2
per usare pdftk, quello che devi fare è: 1) pdftk book.pdf dump_data output report.txt2) modifica report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq

6

Utilizzando Ghostview

Crea un file chiamato "pdfmarks" con questo contenuto:

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

quindi combina questo pdfmarksfile con un file di input PDF, PS o EPS:

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

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


0

Per approfondire il pdftkmetodo, il che è bello perché ti mostra tutto ciò che è stato impostato, allo stesso tempo ti consente di cambiare tutto quello che ti piace, ecco uno script (per il tuo .bashrco altri file alias) per farlo con un solo comando. Ciò crea una nuova versione del file che si desidera modificare, apre l'editor preferito con il metadatafile, quindi implementa le modifiche e imposta il tempo di creazione / modifica del file sul file PDF modificato in modo che sia uguale all'originale. Per usarlo, dopo aver assegnato le risorse al .bashrcfile, basta digitare

editPDFmetadata myfile.pdf

Ecco 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}
}

Posiziona semplicemente la definizione sopra nel .bashrcfile nella tua cartella home, quindi apri un nuovo terminale e sarà pronto per l'uso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.