[ @console @mc @pdf @exiftool @изображения ]
Это консольная утилита, которую можно использовать для редактирования метаданных файлов, в том числе и файлов ”pdf”.
exiftool ценят фотографы за возможность автоматизации всяких дел с файлами, вроде повынимать отовсюду метаданные, на основе полученной информации понасоздавать каталоги по датам и местам съёмки, затем распихать файлы по этим каталогам соответственно…
Установка
Но в обеих системах утилита вызывается идентично — «exiftool».
Рабочий алгоритм
- В Konsole сделать на читалке отдельный каталог metadata
- Сделать отдельный каталог metadata\pdf
- Переместить в каталог metadata\pdf все файлы pdf, чьи поля нужно отредактировать
- В Konsole запустить Midnight Commander, открыть в левой панели каталог metadata\pdf, а в правой панели — каталог metadata
- Сделать отдельный файл metadata\metadata.txt
- Открыть файл metadata.txt на редактирование в Kate
- Записать в файл metadata.txt все поля, которые нужно обновить
- Переместить очередной pdf слева направо и свернуть Midnight Commander (Ctrl+O)
- В файле metadata.txt в Kate отредактировать поля для очередного файла (Ctrl+S)
- В Konsole выполнить команду (при повторах вызвать её из истории через клавиатуру и кнопку “Up”):
exiftool -@ metadata.txt *.pdf && exiftool -Title -Author *.pdf && rm *.pdf_original && mv *.pdf /media/astenix/PB1040/Books/
- Получить в консоли зрительное подтверждение измененных полей. Файл ”*.pdf_original” удалён, а отредактированный файл перемещён в каталог с книгами на читалке.
- Вернуть на экран Midnight Commander (Ctrl+O) и GoTo step #8.
Получить метаданные из файла pdf
Получить метаданные из файла pdf
Здесь подразумевается, что в каталоге находится один файл pdf и мы хотим получить ВСЕ метаданные, которые в нём есть (а их там много, некоторые пустые):
exiftool *.pdf
Можно прямо указать имя нужного файла:
exiftool file_one.pdf
но при этом следует учесть, что если имя файла будет составлено из нескольких слов (то есть, через пробелы), да ещё и с разными печатными символами, то придётся это всё грамотно экранировать кавычками. Проще будет сделать отдельный каталог, переносить туда каждый файл по-отдельности и обращаться к нему через шаблон имени «*.pdf».
Сохранить метаданные в отдельный файл .txt
exiftool *.pdf > pdf_metadata.txt
Получить отдельные метаданные из pdf
Например, нужны только заголовок и имя автора. Их надо прямо перечислить:
exiftool *.pdf -author -title > title_metadata.txt
Получить метаданные из нескольких файлов pdf
Можно перечислить имена этих файлов:
exiftool file_one.pdf file_two.pdf file_three.pdf > pdf_metadata.txt
А можно указать шаблон файлов, и если в каталоге находятся несколько файлов pdf, то все значения из всех файлов pdf, которые будут найдены в каталоге будут последовательно записаны в файл all_pdf_metadata.txt:
exiftool *.pdf > all_pdf_metadata.txt
Получить метаданные из файлов pdf из другого каталога
Например, файлы находятся на электрокниге (ограничимся только запросом заголовка):
exiftool /media/astenix/myPoketBook/Books/*.pdf -title > all_pdf_from_external_folder_metadata.txt
Удалить все метаданные из файла pdf
exiftool -all:all= *.pdf
Записать новые значения метаданных в pdf-файл
Учесть перед обработкой метаданных в pdf для PoketBook
- Имя автора надо прописывать так: «Имя Фамилия»
Во встроенной библиотеке в Poketbook сортировка по имени автора происходит по последнему слову в этом поле.
- «Василий Шукшин» — отображение в списке авторов на "Ш".
- «Карамзин Флоризель Эдуардович» — отображение в списке авторов на "Э".
- Несколько имен авторов у одной книги следует разделять словом «and» или амперсандом
Всё это важно потому, что при регистрации книг в библиотеке Calibre сперва создаёт каталог с именем автора, затем переносит туда все книги, помеченные этим именем автора.
Общепринято разделять имена авторов амперсандом («Василий Шукшин & Флоризель Карамзин») или словом «and» («Василий Шукшин and Флоризель Карамзин»). В Calibre этот амперсанд учитывается и фильтрация по отдельным именам авторов происходит грамотно. А слово «and» в Calibre принудительно превращается в амперсанд и тоже учитывается как полагается.
«Запятая» или «точка с запятой» в именах авторов не используются и воспринимаются Calibre как простой текст.
А в PoketBook всё это не имеет значения. Что в поле Author в метаданных файла pdf написано, то и отображается. Сортировка «по автору» будет выполняться как было указано ранее, по первой букве последнего слова. И неважно, амперсанд там прописан или запятая…
Изменить метаданные одной строкой в консоли
exiftool *.pdf -Author="Имя Фамилия" -Title="Заголовок книги" -Subject="ЕслиОченьНужно" && rm *.pdf_original
Осторожно с дополнительной командой «rm *.pdf_original»! Для безопасности при редактировании метаданных отдельного файла создаётся новый файл pdf, а нетронутый исходный сохраняется отдельно в виде «*.pdf_original» в том же каталоге. Иногда это спасает.
Можно эти файлы-оригиналы перемещать в отдельный каталог (сперва его надо создать, назовём его Originals):
exiftool *.pdf -Author="имяАвтора" -Title="Заголовок книги" && mv *.pdf_original Originals
Изменить метаданные через отдельный файл
- Переместить pdf-файл в отдельный каталог.
Название файла несущественно, бо в итоговой команде будет обращение к *.pdf, что означает «любой файл с расширением pdf, который найдётся в текущем каталоге». Это избавит от необходимости экранировать пробелов в названии обрабатываемого файла.
В этот же каталог положить файл metadata.txt.
- Записать в файл metadata.txt нужные значения будущих метаданных.
Пример:
-Title=Учебник по этике воровства -Author=Имя Фамилия -Description=Любая дополнительная информация -Subject=Компьютеры, Технологии, Ротоскопинг -Producer=LaTeX -Creator=Имя создателя файла
Важно учесть: строки должны начинаться от левого края без отступов.
Неочевидно то, что Subject = Keywords. То есть, что в поле Subject запишешь, то же будет отображаться в поле Keywords.
Разделять данные можно и запятой, и точкой с запятой — будут записаны оба эти символа.
Если какие-то поля объявить, но текстом их не снабдить, то содержимое этих полей будет обнулено.
Рекомендую имя автора книги записать сразу в оба поля:
-Author=Жан Вальжан -Creator=Жан Вальжан
Итоговый пример:
-Title=Пираты и мачта -Author=Жан Вальжан -Creator=Жан Вальжан -Subject=Computer Science -Description= -Producer=
Продвигаемся без фанатизма, бо нужны только те метаданные, которых будет достаточно для каталогизации pdf в контексте PoketBook.
- Выполнить запись метаданных в файл pdf из файла metadata.txt
exiftool -@ metadata.txt *.pdf
Инструкция -@ указывает на необходимость считать данные из файла metadata.txt.
По-умолчанию используется кодировка utf-8. Если по какой-то причине надо записать метаданные из файла metadata.txt в файл pdf в другой кодировке, то надо указать это явно:
exiftool -charset Greek -@ metadata.txt *.pdf
Что есть ещё
qpdf
Опциональная утилита, из всех возможностей которой мне подошла только линеаризация — оптимизация pdf под веб. В эпоху HDD на 400 мб это было важным делом, бо размер файла уменьшается, все дела. Сегодня это может быть несущественно, но если нужно…
qpdf --linearize input.pdf output.pdf
При этом также происходит «to remove orphan data» из файла, что помогает уменьшить его размер.
pdftk
Мощный комбайн, который позволяет делать с pdf почти всё, что может захотеться. Можно выкинуть из файл определённые страницы, можно соединить в один pdf определённые файлы или сразу все файлы из каталога, можно страницы поворачивать, можно очищать и записывать метаданные.
Общая команда записи
pdftk input.pdf update_info metadata.txt output output.pdf
# и превратить их в ноль
# (образовавшейся пустотой)
# и создать новый файл "ouput.pdf"