Шрифт с 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 файлами в целом, но сохранение PDF с помощью Preview, кажется, исправляет кодировку или, по крайней мере, доставляет ее туда, где pdftk
может работать с ней. Удачи.
Ответ 2
Это вызывало у меня огромную головную боль в течение 2 дней. Оказывается, я сосредоточился не на том конце проблемы.
Хорошая альтернатива, которая не так ручна и должна быть сделана только один раз, - это ввести текст в поле исходной PDF-формы, в вашем случае. /my_form.pdf. Я не знаю точно, почему это работает, но это так. таким образом, если вы хотите создать новый файл в любое время, вам не нужно проходить через эту проблему :)