Як редагувати метадані pdf з командного рядка?


83

Мені потрібен інструмент командного рядка для редагування метаданих pdf-файлів.

Я використовую планшет Aiptek MyNote Premium для написання своїх заміток і хвилин на цьому пристрої, імпортую їх пізніше і автоматично конвертую їх у формат pdf за допомогою простого сценарію за допомогою Inkscape та ghostscript.

Чи є інструмент командного рядка для додання деяких категорій до метаданих pdf, тож я можу знайти pdf пізніше (наприклад, з gnome-do) за категоріями?

Оновлення: Я спробував рішення з pdftk, і воно працює, але, схоже, gnome-do не піклується про метадані pdf. Чи є спосіб отримати gnome-do зробити це?

Відповіді:


101

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

Наприклад, якщо у вас є pdf-файл, який називається малюнок.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. З наведеного вище прикладу; файл з іменем; Буде створено малюнок.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Здається, символи Unicode у метаданих.
Механічний равлик

1
У мене виникли проблеми з використанням pdftkнових pdfs (новіші версії шифруються через 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.