Як змусити ghostscript не стерти метадані PDF


10

Ghostscript витирає метадані PDF, як-от author, title, subjectтощо. Як я можу сказати ghostscript не торкатися метаданих? Я закликаю це так:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>

Чому ви використовуєте Ghostscript? Мабуть, є інший спосіб робити все, що ти робиш. Нечасто використовувати Ghostscript, коли вхід не є файлом Postscript.
Жил 'ТАК - перестань бути злим'

3
@Gilles Щоб зменшити розмір зображень у PDF та зменшити розмір. Я не думаю, що це рідкість використання PDF в якості введення. Інструмент, pdf2psнаприклад, використовує ghostscript для перетворення та постачається разом з gs.
Марко

Гаразд, Ghostscript здається звичайним способом зменшення зразків зображень у PDF-файлі, начебто інструментів для маніпуляції з відкритим кодом у цьому відношенні не вистачає. Це або ImageMagick, який дивиться лише на зображення і не переймається метаданими PDF.
Жил "ТАК - перестань бути злим"

2
ImageMagick використовує ghostscript для обробки PDF-файлів.
Марко

@Gilles: "Нечасто використовувати Ghostscript, коли вхід не є файлом Postscript." - Зовсім ні, Жилле! Я використовую його постійно, щодня, щоб робити PDF-> обробку PDF.
Курт Пфайфл

Відповіді:


6

Мабуть, неможливо зберегти метадані PDF при використанні ghostscript. Ось вирішення, яке спочатку зберігає метадані у файл за допомогою pdftk, потім стискає файл ghostscript і, нарешті, також записує назад метадані, використовуючи pdftk.

INPUTPDF=<input_file>
OUTPUTPDF=<output_file>
TMPPDF=$(mktemp)
METADATA=$(mktemp)

# save metadata
pdftk "$INPUTPDF" dump_data_utf8 > "$METADATA"

# compress
gs                       \
  -q                     \
  -sOutputFile="$TMPPDF" \
  -sDEVICE=pdfwrite      \
  -dNOPAUSE              \
  -dBATCH                \
  -dPDFSETTINGS=/ebook   \
  "$INPUTPDF"

# restore metadata
pdftk "$TMPPDF" update_info_utf8 "$METADATA" output "$OUTPUTPDF"

# clean up
rm -f "$TMPPDF" "$METADATA"

Редагувати: це помилка в ghostscript, див. Звіт про помилку та підтвердження того, що цього не повинно статися .


pdftks dump_data (_utf8) буквально виводить китайські етикетки. Я також не зміг знайти форум для pdftk :(
Стефан К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.