81

I need a command line tool for editing metadata of pdf-files.

I'm using a Aiptek MyNote Premium tablet for writing my notes and minutes on this device, import them later and convert them to pdf automatically with a simple script using inkscape and ghostscript.

Is there any command line tool to add some categories to the pdf's metadata, so i can find the pdf later (e.g. with gnome-do) by categories?

Update: I tried the solution with pdftk and it works, but it seems that gnome-do doesn't take care of pdf-metadata. Is there a way to get gnome-do to do that?

99

Give exiftool a try, it is available from the package libimage-exiftool-perl in the repositories.

As an example, If you have a pdf file called drawing.pdf and you want to update its metadata, Use the utility, exiftool, in this way:

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

For some reason the Subject entered ends up in the keywords field of the metadata in the pdf file. not a problem in some cases, even desirable, however, this may be problematic, evince and the nautilus metadata previewer do not show this but Adobe Acrobat viewer and PDF-XChange viewer does.

The program will create a backup of the original file if you do not use the; -overwrite_original switch, this means a duplicate will exist in the folder where the updated pdf is. From example above; a file named ; drawing.pdf_original will be created.

use the overwrite switch at your own risk, my suggestion is not to use it and script something to move this file to a better location just in case.

  • 16
    Note that: "All metadata edits are reversible. While this would normally be considered an advantage, it is a potential security problem because old information is never actually deleted from the file." – nutty about natty Aug 12 '14 at 7:11
  • 5
    @nuttyaboutnatty if you want to purge all remnant and unused metadata entries, you can linearize the PDF file right after processing it with exiftool. This is described in more detail in this Github gist. – Glutanimate Aug 13 '14 at 23:41
  • 9
    @nuttyaboutnatty Well, of course it's not an authoritative source but that's only because nobody ever took the time to write one. However, I can assure that the method described by the author works. Try it out yourself: 1.) Take a PDF that has some tags and "delete" all metadata with exiftool -overwrite_original -all:all="" file.pdf; 2.) Use exiftool -PDF-update:all= file.pdf to confirm that there is still old metadata present; 3.) linearize the file with qpdf --linearize file.pdf; 4.) Check again, like you did in 2.); all metadata should be gone; – Glutanimate Aug 14 '14 at 7:54
  • 4
    5.) confirm that the file has been purged of all metadata by looking at the PDF dictionary (pdfinfo -meta file.pdf) – Glutanimate Aug 14 '14 at 7:55
  • 1
    Works perfectly. I regularly want to copy the metadata from one PDF to another, in which case exiftool -overwrite_original -tagsFromFile <srcfile> <destfile> is what I need (the option -overwrite_original overwrites the original <destfile>). – AstroFloyd Apr 22 '18 at 15:57
15

You can edit metadata by using pdftk. Check out update_info parameter. As for data file, below is an example:

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)

  • 1
    Ok, this means i have to export the metadata to a textfile, edit them and reimport the textfile. Is there a way to directly set a single metadata from command-line? – bdr529 Feb 22 '11 at 6:48
  • There may be, but I couldn't find it. – Olli Feb 22 '11 at 7:26
  • pdftk seems to Unicode characters in the metadata. – Mechanical snail Apr 21 '13 at 21:06
  • 1
    I had some problem using pdftk on new pdfs (newer versions are encrypted via AESV2). Seems like it's discontinued. exiftool was working better. – s1lv3r Aug 26 '13 at 14:58
  • 2
    to use pdftk, what you need to do is: 1) pdftk book.pdf dump_data output report.txt 2) edit report.txt 3) pdftk book.pdf update_info report.txt output bookcopy.pdf – craq Oct 24 '17 at 3:02
6

Using Ghostview

Create a file named “pdfmarks” with this content:

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

then combine this pdfmarks file with a PDF, PS or EPS input file:

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

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

0

To elaborate on the pdftk method, which is nice because it shows you everything that's being set, at the same time as allowing you to change anything you like, here is a script (for your .bashrc or other aliases file) to do it with one command. This creates a new version of the file you want to edit, opens your favourite editor with the metadatafile, and then implements your changes and sets the file creation/modification time on the modified PDF file to be the same as the original. To use it, after resourcing your .bashrc file, just type

editPDFmetadata myfile.pdf

Here's the 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}
}

Simply place the definition above into the .bashrc file in your home folder, then open a new terminal and it will be ready to use.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.