Заполните форму PDF с помощью Ruby

Я пытаюсь программно заполнить pdf, используя ruby. В формате PDF есть поля, позволяющие вводить текст:

скриншот полей PDF

У меня был успех в прошлом, используя pdftk с помощью драгоценного камня pdf_form, однако он не находит поля в этом конкретном формате pdf:

$ pry
[1] pry(main)> require 'pdf_forms'
=> true
[2] pry(main)> pdftk = PdfForms.new('/usr/local/bin/pdftk')
=> #<PdfForms::PdftkWrapper:0x007fece7af6d98 @options={}, @pdftk="/usr/local/bin/pdftk">
[3] pry(main)> pdftk.get_field_names('designation.pdf')
=> []

Как я могу заполнить pdf, используя ruby?

Ответ 1

pdf-form gem будет работать только для pdf, созданного Adobe Acrobat. Пожалуйста, следуйте этому issue

Убедитесь, что в вашем PDF файле вы создали текстовое поле через adobe acrobat

Ответ 2

PdfTk - это не более чем старая версия iText, скомпилированная с использованием GCJ. Заполнение форм с использованием PdfTk возможно, если форма содержит поля, определенные с использованием технологии AcroForm. Это не относится к форме, о которой вы говорите. Я открыл форму в iText RUPS, и это то, что я вижу, когда я просматриваю вкладку Form:

введите описание изображения здесь

Вы видите массив /Fields? Он пуст: []. Это означает, что ничего не нужно для заполнения PdfTk. Тогда где - форма?

Форма описывается с использованием архитектуры XML Forms (XFA). Существует не так много программных продуктов, которые могут заполнить форму XFA. Черт, нет просмотра PDF файлов, которые позволяют просматривать форму. Например, это то, что я вижу, когда открываю форму в своем браузере:

введите описание изображения здесь

Я знаю две линейки продуктов, которые могут удовлетворить ваши потребности:

Будучи генеральным директором iText Group, я бы рекомендовал использовать iText (вы используете старую версию уже в любом случае, если используете PdfTk). iText доступен в виде библиотеки Java, поэтому использование JRuby - ваш лучший шанс удовлетворить ваши требования.

Другой вариант - полностью перепроектировать форму в форму, основанную на технологии AcroForm, а не на технологии XFA.

Ответ 3

Я боюсь, что вас могут заставить использовать JRuby и iText. Я делал аналогичные вещи в прошлом, и iText кажется лучшей доступной библиотекой для работы со сложными файлами PDF.

http://www.mikeperham.com/2011/02/15/filling-out-pdf-forms-with-jruby/