12

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

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

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

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

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

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

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

1 ответ1

4

Очень сложно заменить шрифт, встроенный в 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»), которые не будут изменены этой командой.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .