Программное добавление заполняемых полей форм в PDF файл

Вопрос или проблема

Мне регулярно нужно создавать PDF-файлы с заполняемыми полями формы, которые затем можно заполнить с помощью Adobe Reader. Однако после долгих исследований оказывается, что единственные инструменты, способные действительно добавлять заполняемые поля формы в PDF, – это GUI-инструменты, такие как Acrobat и Foxit, которые также часто являются собственническими. Обратите внимание, что я не спрашиваю о инструментах, которые программно заполняют эти поля формы, которых, похоже, много, – я спрашиваю о противоположном.

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

pymupdf может быть вариантом для программной генерации PDF-документов.

https://github.com/pymupdf/PyMuPDF

https://github.com/pymupdf/PyMuPDF-Utilities/blob/master/fields/form-fields.py

Если это ДОЛЖНО быть «бесплатно», вам придется поискать среди обычных подозреваемых (то есть библиотек для создания PDF); возможно, есть некоторые доступные решения.

В противном случае, лучшим инструментом (потому что он имеет самый широкий спектр методов и свойств JavaScript) является Acrobat Pro. Точка.

Для очень простых форм вы также можете посмотреть на модуль проектирования форм в LibreOffice (но вам все равно может понадобиться Acrobat, даже если только для отладки ваших форм).

Основная идея массового заполнения PDF с полями заключается в том, что они должны содержать только текст, поэтому принимаем первый предложенный пример в FDF и добавляем данные. Вам не нужно добавлять ВСЕ поля, только те, которые вы хотите заполнить ИЛИ изменить.

%FDF-1.4
%âãÏÓ
1 0 obj
<< /FDF << /F (OoPdfFormExample.pdf)
/Fields [<<
/T (Адрес 1 Текстовое Поле) /V (Привет, мир!)
>> <<
% ... другие поля данных, если нужно

/T (Фамилия Текстовое Поле) /V (Азиз)
>> <<
/T (Любимый Цвет Список) /V (Красный)
>> <<
/T (Пол Список) /V (Мужчина)
>> <<
/T (Имя Текстовое Поле) /V (Хашим)
>> <<
% ... другие поля данных, если нужно

/T (Язык 5 Флажок) /V /Off
>> <<
/T (Почтовый Индекс Текстовое Поле) /V (AB12 3CD) 
>>]
/ID [<5E0A553555622A0516E9877CA55217A6> <5E0A553555622A0516E9877CA55217A6>]
/UF (OoPdfFormExample.pdf)
>>
/Type /Catalog
>>
endobj
trailer
<<
/Root 1 0 R
>>
%%EOF

Теперь мы можем использовать этот файл (попробуйте с http://foersom.com/net/HowTo/data/OoPdfFormExample.pdf, но, возможно, нужно будет очистить мои % … комментарии для более чистого файла), это так же просто, как двойной щелчок по FDF, и он открывает PDF с этими данными. Нам нужно сначала убедиться, что форма доверена. (Просто установите на “Всегда”)

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

Теперь каждый раз, когда мы открываем FDF с различными полями данных, они автоматически вставляются в шаблон. Нам просто нужно перезаписать данные FDF перед открытием и сохранить PDF под новым именем.

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

Ответ

Эта функция Acrobat стоит дорого по сравнению с кроссплатформенной командной строкой PDFTK, которая менее чем за 30 долларов предоставляет лицензию сервера. Но она использует более старый синтаксис на основе V-1.2?

Альтернатива – использование современного дешевого SDK командной строки, такого как Tracker PDF-Xchange (бесплатный вариант тоже подойдет), который также может открывать FDF через командную строку и СОДЕРЖИТЬ как PDF и стоит примерно вдвое дороже PDFTK.

Медленный путь

Направьте данные в файл, например, HashimAziz.FDF
Откройте Acrobat Reader с пустым файлом
Загрузите AcroRd32 HashimAziz.FDF
Используйте VBA или sendkeys для запуска “Сохранить как” и введите “HashimAziz”
{Shift+Ctrl+S} (будет зависеть от метода) ЖДИ 500 {Enter} ЖДИ 500 HashimAziz {Enter}
Затем “Цикл” для следующего FDF
КОНЕЦ цикла
Отправьте {Alt+F4}

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

Возможные сложности заключаются в том, что текст FDF требует осторожности, когда поле в шаблоне было неправильно размечено, так как могут возникнуть различные проблемы с полями, которые слишком малы для потенциального содержимого, особенно Unicode.

Что является другой проблемой, так это то, что PDF не использует UTF-8 обычным образом, поэтому нам нужно учитывать шестнадцатеричное кодирование или использовать ANSI, как это

>> <<
/T (Имя Текстовое Поле)
/V (þÿG'4E)
>> <<

Что, если выполнено правильно, заполнит увеличенное поле вот так, (так что оно должно быть еще больше).

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

Ответ или решение

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

1. Использование библиотеки PyMuPDF (fitz)

PyMuPDF — это мощная библиотека для работы с PDF, которая поддерживает создание и редактирование PDF-документов. Она позволяет добавлять заполняемые поля формы в PDF. Пример использования:

import fitz  # PyMuPDF

# Создаем новый PDF-документ
pdf = fitz.open()

# Добавляем пустую страницу
page = pdf.new_page()

# Добавляем текстовое поле
widget = page.add_text_field("textField1", (50, 50, 200, 70), value="Введите текст")
widget.set_font_size(12)

# Сохраняем PDF
pdf.save("output.pdf")
pdf.close()

Подробную информацию и примеры можно найти в документации PyMuPDF.

2. Использование PDFtk

PDFtk (PDF Toolkit) — это мощный инструмент командной строки для работы с PDF-файлами. Он позволяет создавать формы и добавлять поля с помощью .FDF файлов. Вот как вы можете использовать PDFtk для добавления полей формы:

  1. Создайте шаблон PDF с полями.
  2. Создайте FDF файл с данными:
%FDF-1.2
%âãÏÓ
1 0 obj
<< /FDF << /F (your_template.pdf) /Fields [
<< /T (FieldName) /V (FieldValue) >>
] >>
>>
endobj
trailer
<< /Root 1 0 R >>
%%EOF
  1. Используйте команду для объединения вашего шаблона и FDF:
pdftk your_template.pdf fill_form your_data.fdf output filled_output.pdf

PDFtk доступен для Windows, macOS и Linux. Вы можете скачать его с официального сайта.

3. Использование LibreOffice

Если вам нужно простое и бесплатное решение, вы можете использовать LibreOffice для создания форм:

  1. Откройте LibreOffice Writer и создайте текстовый документ.
  2. Включите элементы управления формами через меню "Вставка" > "Элементы управления формы".
  3. Разместите нужные вам поля (тексты, флажки и др.).
  4. Сохраните документ как PDF.

LibreOffice также поддерживает экспорт в PDF с формами.

4. Использование Adobe Acrobat Pro

Хотя это решение платное, Adobe Acrobat Pro предлагает самый полный набор инструментов для создания и редактирования форм, включая использование JavaScript для добавления сложной логики в формы.

Заключение

Выбор инструмента зависит от ваших потребностей и доступных ресурсов. Если вам нужно что-то простое и бесплатное, попробуйте PyMuPDF или PDFtk. Если вам необходимо более сложное решение с расширенными возможностями, возможно, стоит рассмотреть Adobe Acrobat Pro.

Если у вас возникнут дополнительные вопросы или потребуется помощь с конкретным инструментом, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...