How to edit pdf metadata from command line?

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?

asked Feb 21, 2011 at 11:40 3,038 2 2 gold badges 17 17 silver badges 14 14 bronze badges

8 Answers 8

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 do.

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 the 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.

2,207 2 2 gold badges 22 22 silver badges 36 36 bronze badges answered May 4, 2011 at 5:08 40.6k 6 6 gold badges 38 38 silver badges 42 42 bronze badges

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."

Commented Aug 12, 2014 at 7:11

@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.

Commented Aug 13, 2014 at 23:41

@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;

Commented Aug 14, 2014 at 7:54

5.) confirm that the file has been purged of all metadata by looking at the PDF dictionary ( pdfinfo -meta file.pdf )

Commented Aug 14, 2014 at 7:55

Works perfectly. I regularly want to copy the metadata from one PDF to another, in which case exiftool -overwrite_original -tagsFromFile is what I need (the option -overwrite_original overwrites the original ).

Commented Apr 22, 2018 at 15:57

You can edit PDF metadata using pdftk . Check out the update_info (or update_info_utf8 if you need accented characters) 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 
2,207 2 2 gold badges 22 22 silver badges 36 36 bronze badges answered Feb 21, 2011 at 11:44 9,031 1 1 gold badge 35 35 silver badges 40 40 bronze badges

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?

Commented Feb 22, 2011 at 6:48 pdftk seems to Unicode characters in the metadata. Commented Apr 21, 2013 at 21:06

I had some problem using pdftk on new pdfs (newer versions are encrypted via AESV2). Seems like it's discontinued. exiftool was working better.

Commented Aug 26, 2013 at 14:58

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

Commented Oct 24, 2017 at 3:02 @Pont seems to be working again in pdftk version 3.0.9. Commented Feb 1, 2021 at 13:35

Using Ghostview

Install ghostscript with:

$ sudo apt install ghostscript 

Create a file named pdfmarks with similar 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 original.pdf pdfmarks 
202k 55 55 gold badges 497 497 silver badges 754 754 bronze badges answered Jan 19, 2016 at 18:54 Serge Stroobandt Serge Stroobandt 5,456 1 1 gold badge 51 51 silver badges 59 59 bronze badges

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

Here's the alias:

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

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.

answered May 17, 2018 at 17:40 798 2 2 gold badges 9 9 silver badges 21 21 bronze badges

This is excellent, but I recommend quoting your variables when using them (e.g.: pdftk "$<1>" dump_data . ) in case of PDF files with spaces or other special characters in their filename.

Commented Mar 16, 2020 at 2:55 @NiayeshIsky Thanks! Done. Hopefully the filename does not have quotes in it? Commented Mar 17, 2020 at 3:03

Thanks! About quotes: Not in my case, at least :) (Sorry - I just noticed there is one $METADATA that is still unquoted, on the second pdftk line. I don't know if AU will allow such a small edit though.)

Commented Mar 18, 2020 at 5:36

I needed to blank out the Author field in a PDF exported from LibreOffice. None of the solutions listed above worked for me, so I used hexedit and overwrote the Author field. Blunt instrument but effective!

$ hexedit file.pdf 
15.4k 11 11 gold badges 54 54 silver badges 91 91 bronze badges answered Nov 27, 2020 at 14:11 81 1 1 silver badge 1 1 bronze badge Smartest solution of them all, other solutions only work for simple mods Commented Dec 22, 2021 at 13:15

I have extensively tested the functionality of pdftk and exiftool. I have used exiftool both at command line and through a graphical window. These have been tested for small, medium size and very large PDF documents and found to have issues with the largest and most complex PDF documents. In my experience, the pdftk / exiftool have top functionality only for small and for simple-in-formatting PDF documents. For large and complex PDF documents (eg more than 80 pages with multiple fonts) images and/or characters may fall out from the last pages after the metadata has been edited. The solution may be in the use of Ghostview, which I saw just now. No doubt these programs will improve with time.

In the meantime, I have found a solution in using the present form of Wine in Ubuntu with a one-window tiny freeware program, which works also for these large, complex PDF documents: BeCyPDFMetaEdit (available eg from freeware libraries like SoftPedia).

answered Oct 28, 2019 at 21:55 61 1 1 silver badge 1 1 bronze badge

It looks like BeCyPDFMetaEdit has been discontinued, as of Nov. 2018. The last available website I see for it is archived here: web.archive.org/web/20180929111456/http://www.becyhome.de/…

Commented Jul 12, 2023 at 7:40

Another command is ebook-meta (avaiable after installing Calibre).

ebook-meta file.pdf 

To change title:

ebook-meta file.pdf -t "Conversations with Ambrosius"