Как заставить ghostscript не стирать метаданные PDF

10

Ghostscript стирает метаданные PDF как author, title, subjectи т. Д. Как я могу сказать ghostscript не трогать метаданные? Я призываю это следующим образом:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>
Marco
источник
Почему вы используете Ghostscript? Вероятно, есть другой способ сделать то, что вы делаете. Редко использовать Ghostscript, когда входные данные не являются файлом Postscript.
Жиль "ТАК - перестань быть злым"
3
@ Жиль Для уменьшения изображения в PDF и уменьшения размера. Я не думаю, что это необычно использовать PDF в качестве входных данных. Инструмент, pdf2psнапример, использует ghostscript для конвертации и поставляется вместе с gs.
Марко
Хорошо, Ghostscript, кажется, является обычным способом уменьшения изображений в PDF-файле, в этом случае отсутствуют инструменты для работы с 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, см. Отчет об ошибке и подтверждение того, что это не должно происходить .

Marco
источник
pdftks dump_data (_utf8) буквально выводит китайские метки. Я также не смог найти форум для pdftk :(
Стефан К.