Заменить шрифт в документе PDF

13

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

Как я могу изменить документ PDF - у меня нет доступа к исходному документу, который использовался для его создания - чтобы заменить другой шрифт вместо сломанного ?

Рассматриваемый шрифт - это Caliban Regular от Adobe , который я вижу в документе. Глифы, которые отображаются пустыми, включают «i», «T», «V»; возможно, другие, которых я не обнаружил.

У меня также есть другой подобный документ, использующий Caliban, который действительно отображает правильно, включая глифы, которые перечислены выше как сломанные. Если кто-то может сказать мне, как взять шрифт из одного PDF и заменить его в существующий PDF , это было бы решением.

В настоящее время я использую:

  • Debian GNU + Linux
  • Evince (и я тоже пробовал Okular ) для просмотра
  • Библиотека Poppler для рендеринга PDF
  • Emacs (или любой текстовый редактор) для редактирования кода PDF
  • pdftk и OpenOffice.org установлены, если это поможет

Я был бы заинтересован в других бесплатных программных средствах редактирования PDF ( будь то нулевая цена или нет ), если они помогут с этой задачей.

большой нос
источник
Какое программное обеспечение для просмотра или редактирования PDF вы используете? Какой шрифт используется полями формы? И этот шрифт внедрен после того, как вы сохранили PDF-форму под другим именем?
Курт Пфайфл
Спасибо за комментарий, я расширил описание, чтобы ответить на ваши вопросы.
bignose
Еще один вопрос: можете ли вы назвать глифы (что означает буквенные формы), которые вы хотите поместить в поля формы и которые отображаются только как пробелы?
Курт Пфайфл
Ваш шрифт Caliban выглядит следующим образом: linotype.com/de/202/caliban-schriftfamilie.html или скорее так: fontspace.com/george-williams/caliban
Курт Пфайфл
1
@bignose вы нашли решение этой проблемы?
Jubei

Ответы:

5

Очень сложно заменить шрифт, встроенный в PDF. Я не знаю ни о каком программном обеспечении free-as-in-speech (под лицензией GPL) или free-as-in-beer (gratis), которое могло бы это сделать (сначала вытащив шрифт, а затем заново вставив шрифт sustitute). Я знаю только о двух коммерческих продуктах, которые делают это: callassoftware.com's pdfToolbox4 и Enfocus ' PitStop (конечно, есть и другие, но я не знаю их, и эти два лидера рынка здесь).

Вот способ извлечь встроенный шрифт из PDF с помощью свободного программного обеспечения. Имейте в виду, что вам разрешено делать это только по закону, если лицензия шрифта не запрещает этого. В хранилище исходного кода Ghostscript находится программная утилита PostScript, extractFonts.psкоторая может помочь здесь:

  1. Установите Ghostscript. Используйте последнюю версию, 8.71.
  2. Загрузите файл http://svn.ghostscript.com/ghostscript/trunk/gs/toolbin/extractFonts.ps
  3. Вы можете прочитать комментарии, содержащиеся в загруженном файле.
  4. Выполните следующую команду в окне DOS (cmd.exe):

    gswin32c.exe ^
        -q ^
        -dNODISPLAY ^
        C:/path/to/extractFonts.ps ^
        -c "(c:/path/to/your-pdf-file.pdf) extractFonts quit"
    
  5. Примите к сведению любые предупреждения или сообщения об ошибках, которые может выдать команда.
  6. Успешно извлеченные шрифты теперь будут храниться в вашем текущем каталоге с тем же именем, что и в PDF.

(Имейте в виду, что извлечение шрифтов здесь означает не удаление шрифтов из PDF, а создание файлов шрифтов, которые являются копиями файлов, встроенных в PDF.)


Вот еще один строительный блок, который может способствовать достижению того, чего вы хотите. Возможно, вы захотите распаковать все сжатые части / потоки вашего PDF, чтобы вам было легче редактировать файл с помощью простого текстового редактора. (Предупреждение: редактирование PDF-файлов не является простой и понятной задачей - ваши усилия по редактированию потребуют довольно значительного ноу-хау и умения разбираться во внутренних форматах файлов PDF.)

Этот прием также использует утилиту из toolbinподкаталога Ghostscript Subversion .

  1. Загрузите файл http://svn.ghostscript.com/ghostscript/trunk/gs/toolbin/pdfinflt.ps
  2. Вы можете прочитать комментарии в загруженном файле.
  3. Выполните следующую команду в окне DOS (cmd.exe):

    gswin32c.exe ^
         -- ^
         c:/path/to/pdfinflt.ps ^
         c:/path/to/your-pdf-file.pdf ^
         c:/path/to/your-pdf-file-decompressed.pdf
    

Эта команда попытается распаковать все «сжатые» потоки. (Если вам не повезло, ваш файл также будет содержать потоки, использующие другие методы сжатия (например, «zip» ), которые не будут изменены этой командой.)

Курт Пфайфл
источник