Как восстановить файл PDF и внедрить отсутствующие шрифты

Я использую pdftk для исправления некоторых сбоев в поврежденных файлах PDF, но у меня возникла другая проблема, которая не исправлена ​​с помощью pdftk (или, по крайней мере, я не знаю, как это сделать).

У меня есть файлы PDF с текстом на основе шрифтов TrueType, но шрифты не были внедрены во время создания PDF. Теперь я хочу встроить необходимые шрифты в существующие файлы.

Есть ли средство командной строки (например, pdftk) для встраивания отсутствующих шрифтов путем указания пути к файлам TTF?

Ответы

Ответ 1

Вы можете использовать Ghostscript для встраивания отсутствующих шрифтов. Выполните команду следующим образом:

gs                                             \
  -o file-with-embedded-fonts.pdf              \
  -sDEVICE=pdfwrite                            \
  -dEmbedAllFonts=true                         \
  -sFONTPATH="/path/to/ttf;/other/path/to/ttf" \
   input-without-embedded-fonts.pdf

См. также этот ответ:

Ответ 2

У меня была такая же проблема (на Ubuntu 14.04), и я нашел следующее решение:

  • установить Acrobat Reader
  • напечатать "print to file" в файл postscript ( "foo.ps" ) и "advanced → print as image"
  • то на консоли используйте ps2pdf foo.ps foo.pdf, и результатом будет файл со встроенными шрифтами и исходным контентом

Промежуточный файл постскриптума намного больше (650 КБ), чем входной файл (56 КБ), но полученный PDF снова является умеренным по размеру (82 КБ).

Я не знаю, почему это работает, т.е.

  • почему "печатать как изображение в файл", кажется, создает изображение, но также сохраняет информацию о шрифте,
  • почему ps2pdf восстанавливает эту информацию о шрифте и
  • Почему шрифты в полученном PDF файле вообще отсутствуют, потому что это должен быть только образ, правильно?

Но результатом является PDF со всеми встроенными шрифтами и размером, подобным исходному файлу.