Подтвердить что ты не робот

Замените все символы шрифта в PDF, переведя их в наброски фигур

Я ищу способ "набросать" весь текст/шрифты в файле PDF, т.е. преобразовать их в кривые.

Я бы предпочел сделать это без необходимости конвертировать PDF в PostScript и обратно. Кроме того, я хотел бы использовать бесплатные легкие кросс-платформенные инструменты, которые могут быть автоматизированы из командной строки, например Ghostscript или MuPDF.

4b9b3361

Ответ 1

Да, вы можете использовать Ghostscript для достижения желаемого.

I. Для версий Ghostscript до 9.14

Вам нужно пройти 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
    

Этот метод не является надежным долговременным, потому что разработчики Ghostscript заявили, что -dNOCACHE может отсутствовать в будущих версиях.

Примечание. полученный PDF файл, скорее всего, будет больше исходного. Кроме того, без дополнительных параметров командной строки все изображения в исходном PDF файле, вероятно, также будут обработаны в соответствии с настройками по умолчанию Ghostscript. Это может привести к нежелательным побочным эффектам. Эти побочные эффекты можно избежать, добавив еще больше параметров командной строки.


II. Ghostscript версии 9.15 или новее

Ghostscript версия 9.15 (выпущена в сентябре 2014 г.) поддерживает новый параметр командной строки:

 -dNoOutputFonts

Это приведет к тому, что выходные устройства pdfwrite, ps2write и eps2write "будут" сглаживать "глифы в" основные "операции маркировки (вместо написания шрифтов на выходе)".

Это означает: можно избежать двух шагов, описанных для версий до 9.15 GS. Желаемый результат может быть достигнут с помощью одной команды:

 gs -o file-with-outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite file.pdf

Примечание. то же предостережение верно, как уже отмечено в части I. Если ваш PDF файл содержит изображения, могут возникнуть нежелательные побочные эффекты, введенные простой командной строкой выше. Чтобы избежать этого, вам нужно добавить более конкретные параметры.

Ответ 2

Этот commit добавляет новый переключатель -dNoOutputFonts в устройства Ghostscript pdfwrite и ps2write, которые будут создавать PDF файл (или PostScript, в зависимости от выбранного устройства), где все глифы были созданы как векторы, а не как текст.

Для получения этой функции вам понадобится хотя бы версия 9.15 Ghostscript. Имейте в виду, что файл PDF почти наверняка будет больше, и копирование/вставка/поиск (очевидно) не будут работать.