Как редактировать метаданные pdf из командной строки?


83

Мне нужен инструмент командной строки для редактирования метаданных pdf-файлов.

Я использую планшет Aiptek MyNote Premium для написания своих заметок и минут на этом устройстве, импортирую их позже и автоматически конвертирую в pdf с помощью простого скрипта с использованием inkscape и ghostscript.

Существует ли какой-либо инструмент командной строки для добавления некоторых категорий в метаданные PDF, так что я могу найти PDF позже (например, с помощью gnome-do) по категориям?

Обновление: я пробовал решение с pdftk, и оно работает, но кажется, что gnome-do не заботится о pdf-метаданных. Есть ли способ заставить гнома сделать это?

Ответы:


101

Попробуйте exiftool, он доступен из пакета libimage-exiftool-perl в репозиториях.

Например, если у вас есть файл pdf с именем drawing.pdf и вы хотите обновить его метаданные, используйте утилиту exiftool следующим образом:

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

По какой-то причине введенный субъект попадает в поле ключевых слов метаданных в файле PDF. в некоторых случаях это не проблема, даже желательно, однако, это может быть проблематично, так как программа предварительного просмотра метаданных nautilus этого не показывает, а программа просмотра Adobe Acrobat и программа просмотра PDF-XChange.

Программа создаст резервную копию исходного файла, если вы не используете; -overwrite_originalПереключатель означает, что в папке, где находится обновленный файл PDF, будет дубликат. Из примера выше; файл с именем; Drawing.pdf_original будет создан.

используйте переключатель перезаписи на свой страх и риск, я предлагаю не использовать его и не создавать сценарии, чтобы переместить этот файл в лучшее место на всякий случай.


16
Обратите внимание: « Все изменения метаданных являются обратимыми . Хотя это обычно считается преимуществом, это потенциальная проблема безопасности, поскольку старая информация никогда не удаляется из файла».
сумасшедший о Natty

5
@nuttyaboutnatty Если вы хотите удалить все оставшиеся и неиспользуемые записи метаданных, вы можете линеаризовать PDF-файл сразу после его обработки с помощью exiftool. Это описано более подробно в этой статье Github .
Glutanimate

9
@nuttyaboutnatty Ну, конечно, это не авторитетный источник, но это только потому, что никто не удосужился написать его. Однако могу заверить, что метод, описанный автором, работает. Попробуйте сами: 1.) Возьмите PDF-файл с некоторыми тегами и «удалите» все метаданные exiftool -overwrite_original -all:all="" file.pdf; 2.) Используйте, exiftool -PDF-update:all= file.pdfчтобы подтвердить, что все еще присутствуют старые метаданные; 3.) линеаризовать файл с помощью qpdf --linearize file.pdf; 4.) Проверьте еще раз, как вы сделали в 2.); все метаданные должны быть удалены;
Glutanimate

4
5.) подтвердите, что файл был очищен от всех метаданных, просмотрев словарь PDF ( pdfinfo -meta file.pdf)
Glutanimate

1
Работает отлично. Я регулярно хочу копировать метаданные из одного PDF в другой, и в этом случае exiftool -overwrite_original -tagsFromFile <srcfile> <destfile>мне нужно (опция -overwrite_originalперезаписывает оригинал <destfile>).
AstroFloyd

15

Вы можете редактировать метаданные с помощью pdftk. Проверьте update_infoпараметр. Что касается файла данных, ниже приведен пример:

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

( Источник )


1
Хорошо, это означает, что я должен экспортировать метаданные в текстовый файл, редактировать их и повторно импортировать текстовый файл. Есть ли способ напрямую установить отдельные метаданные из командной строки?
bdr529

Может быть, но я не смог его найти.
Олли

pdftkпохоже на символы Юникода в метаданных.
Механическая улитка

1
У меня были некоторые проблемы с использованием pdftkновых PDF-файлов (более новые версии зашифрованы через AESV2). Похоже, это прекращено. exiftoolработал лучше.
s1lv3r

2
чтобы использовать pdftk, вам нужно: 1) pdftk book.pdf dump_data output report.txt2) отредактировать report.txt 3)pdftk book.pdf update_info report.txt output bookcopy.pdf
craq

6

Использование Ghostview

Создайте файл с именем «pdfmarks» с таким содержанием:

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

затем объедините этот pdfmarksфайл с входным файлом PDF, PS или EPS:

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

Источник: http://milan.kupcevic.net/ghostscript-ps-pdf/


0

Подробно о pdftkметоде, который хорош, потому что он показывает вам все, что устанавливается, и в то же время позволяет вам изменять что угодно, вот скрипт (для вашего .bashrcили другого файла псевдонимов), чтобы сделать это с помощью одной команды. Это создаст новую версию файла, который вы хотите отредактировать, откроет ваш любимый редактор с метаданным, а затем внесет ваши изменения и установит время создания / изменения файла в измененном PDF-файле таким же, как и в оригинале. Чтобы использовать его, выделив .bashrcфайл, просто введите

editPDFmetadata myfile.pdf

Вот псевдоним:

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

Просто поместите приведенное выше определение в .bashrcфайл в вашей домашней папке, затем откройте новый терминал, и он будет готов к использованию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.