Шрифт с PDFtk

У меня возникают трудности с заполнением формы с помощью pdftk с текстовыми полями с истинными шрифтами.

  • Файлы шрифтов (.ttf) добавляются в /Library/Fonts (OSX Mavericks)
  • Форма создается с помощью Adobe Acrobat Pro
  • Форма включает обычный (неформатный) текст с использованием этих шрифтов
  • Текстовые поля формы также используют эти шрифты
  • Форма может быть успешно заполнена и распечатана с помощью Adobe Acrobat Pro и даже Preview

Однако pdftk выдает ошибку при попытке заполнить ее с помощью команды:

pdftk ./my_form.pdf fill_form my_data.fdf output ./the_output.pdf

Вывод:

Unhandled Java Exception in create_output():
java.lang.ArrayIndexOutOfBoundsException: 0
   at pdftk.com.lowagie.text.pdf.DocumentFont.fillEncoding(pdftk)
   at pdftk.com.lowagie.text.pdf.DocumentFont.doType1TT(pdftk)
   at pdftk.com.lowagie.text.pdf.DocumentFont.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.AcroFields.getAppearance(pdftk)
   at pdftk.com.lowagie.text.pdf.AcroFields.setField(pdftk)
   at pdftk.com.lowagie.text.pdf.AcroFields.setFields(pdftk)

Если я изменю шрифт текстовых входов на Helvetica, Times Roman или Courier, pdftk будет успешно создавать PDF файл. Как ни странно, Arial и Georgia также бросают ту же ошибку.

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

Было бы с благодарностью принята рабочая резолюция.

Ответы

Ответ 1

Я получал ту же ошибку java.lang.ArrayIndexOutOfBoundsException: 0, используя pdftk, чтобы заполнить формы в Adobe Acrobat, сгенерированном PDF. Этот вопрос супер старый, но я не смог найти последовательный ответ в stackoverflow или в другом месте, поэтому решил, что опубликую свое исправление.

Что закончилось для меня:

  • Открытие PDF файла в приложении OS X
  • Нажав на поле формы, добавив текст, удалив этот текст (так что ничего не изменилось)
  • Сохранение

  • Запуск PDF через pdftk снова

Я не знаком с кодировкой или PDF файлами в целом, но сохранение PDF с помощью Preview, кажется, исправляет кодировку или, по крайней мере, доставляет ее туда, где pdftk может работать с ней. Удачи.

Ответ 2

Это вызывало у меня огромную головную боль в течение 2 дней. Оказывается, я сосредоточился не на том конце проблемы.

Хорошая альтернатива, которая не так ручна и должна быть сделана только один раз, - это ввести текст в поле исходной PDF-формы, в вашем случае. /my_form.pdf. Я не знаю точно, почему это работает, но это так. таким образом, если вы хотите создать новый файл в любое время, вам не нужно проходить через эту проблему :)