Как редактировать метаданные pdf из командной строки?
Мне нужен инструмент командной строки для редактирования метаданных pdf-файлов.
Я использую планшет Aiptek MyNote Premium для написания своих заметок и минут на этом устройстве, импортирую их позже и автоматически конвертирую в pdf с помощью простого скрипта с использованием inkscape и ghostscript.
Существует ли какой-либо инструмент командной строки для добавления некоторых категорий в метаданные PDF, так что я могу найти PDF позже (например, с помощью gnome-do) по категориям?
Обновление: я пробовал решение с pdftk, и оно работает, но кажется, что gnome-do не заботится о pdf-метаданных. Есть ли способ заставить гнома сделать это?
8 ответов
Попробуйте 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 будет создан.
используйте переключатель перезаписи на свой страх и риск, я предлагаю не использовать его и не создавать сценарии, чтобы переместить этот файл в лучшее место на всякий случай.
Вы можете редактировать метаданные, используя 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
( Источник)
Использование 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
Чтобы уточнить на 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 файл в вашей домашней папке, затем откройте новый терминал, и он будет готов к использованию.
Мне нужно было очистить поле " Автор" в PDF-файле, экспортированном из LibreOffice. Ни одно из перечисленных выше решений не помогло мне, поэтому я использовалhexeditи перезаписал поле Автор. Инструмент тупой, но эффективный!
В деталях:
Бегать:
$ hexedit file.pdfTab чтобы переключиться на ASCII.
Ctrl+S искать "Автор".
Пропустить
<FEFFв начале поля.Напишите
0над всеми персонажами (кроме трех0x03символов... YMMV) до закрытия>.Ctrl+X сохранить и выйти.
Я тщательно протестировал функциональность pdftk и exiftool. Я использовал exiftool как в командной строке, так и через графическое окно. Они были протестированы для малых, средних и очень больших PDF-документов и обнаружили проблемы с самыми большими и сложными PDF-документами. По моему опыту, pdftk / exiftool обладают высочайшей функциональностью только для небольших и простых в формате PDF документов. Для больших и сложных документов PDF (например, более 80 страниц с несколькими шрифтами) изображения и / или символы могут выпадать с последних страниц после редактирования метаданных. Решение может быть в использовании Ghostview, который я видел только сейчас. Без сомнения, эти программы со временем улучшатся.
Тем временем я нашел решение в использовании существующей формы Wine в Ubuntu с крошечной бесплатной программой с одним окном, которая работает также для этих больших, сложных документов PDF: BeCyPDFMetaEdit (доступный, например, из бесплатных библиотек, таких как SoftPedia).
Другая команда — ebook-meta (доступна после установки Caliber).
Чтобы увидеть теги:
ebook-meta file.pdf
Чтобы изменить заголовок:
ebook-meta file.pdf -t "Conversations with Ambrosius"
Он находится в библиотеке действий, поэтому вы также можете редактировать метаданные PDF из командной строки.
$ npm install @lancejpollard/act -g
$ act update input.pdf --title foo --author bar --subject baz -k one -k two
Вы также можете установить
-p издатель,
-c создатель
-t0 дата создания, и
-tn дата обновления.