Вы можете использовать Ghostscript для достижения этой цели.Вам нужно 2 шага:
Преобразовать PDF в файл PostScript, в котором все используемые шрифты преобразованы в контурные фигуры.Ключевым моментом здесь является параметр -dNOCACHE
:
gs -o somepdf.ps -dNOCACHE -sDEVICE=pswrite somepdf.pdf
Преобразование PS обратно в PDF (и, возможно, удаление промежуточного PS снова):
gs -o somepdf-with-outlines.pdf -sDEVICE=pdfwrite somepdf.ps
rm somepdf.ps
Обратите внимание, что результирующий PDF, скорее всего, будет больше исходного.(И без дополнительных параметров командной строки все изображения в исходном PDF, скорее всего, также будут конвертированы в соответствии со встроенными значениями по умолчанию Ghostscript, если вы не добавите больше параметров командной строки, чтобы сделать иначе. Но качество должно быть лучше, чем ваша собственная попытка использовать Ghostscript...)
Обновление
По-видимому, с версии 9.15 (будет выпущено в сентябре / октябре 2014 года), Ghostscript будетподдержка нового параметра командной строки:
-dNoOutputFonts
, что приведет к тому, что устройства вывода pdfwrite
, ps2write
и eps2write
"" сгладят "глифы вбазовые «операции маркировки (вместо записи шрифтов в вывод)» .
Это означает, что вышеупомянутых двух шагов можно избежать, и желаемый результат будет достигнут с помощью одной команды:
gs -o somepdf-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite somepdf.pdf
Предостережения: Я проверил это с несколькими входными файлами, используя самоскомпилированный Ghostscript, основанный на текущих источниках Git.Это работало безупречно в каждом случае.