Как восстановить файл 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 со всеми встроенными шрифтами и размером, подобным исходному файлу.