Извлечение данных из AcroForm с помощью Python
Извлеките поля формы из PDF-документа
Form из пространства имен aspose.pdf.facades предоставляет простой способ читать данные полей AcroForm без открытия полной объектной модели документа. Переберите form.field_names, чтобы получить имена всех полей формы, затем вызовите form.get_field(name), чтобы получить их текущие значения.
- Создайте объект
Form, передав путь к входному файлу. - Переберите
form.field_names, чтобы перечислить все имена полей. - Вызовите
form.get_field(name)для каждого имени и сохраните результат в словарь.
import aspose.pdf as apdf
from io import FileIO
from os import path
import json
from aspose.pycore import cast, is_assignable
path_infile = self.dataDir + infile
form = apdf.facades.Form(path_infile)
form_values = {}
# Get values from all fields
for formField in form.field_names:
# Analyze names and values if needed
form_values[formField] = form.get_field(formField)
print(form_values)
Получите значение поля формы по заголовку
Если вы знаете точное имя поля формы, заданное в PDF, вы можете получить его значение напрямую с помощью form.get_field(name), не перебирая всю коллекцию полей. Это самый быстрый подход, когда нужны только отдельные поля.
- Создайте объект Form, передав путь к входному файлу.
- Вызовите
form.get_field("FieldName"), указав точный заголовок поля, как он задан в PDF. - Используйте возвращённое строковое значение в приложении.
import aspose.pdf as apdf
form = apdf.facades.Form(path_infile)
# Retrieve a single field value by its name
value = form.get_field("FirstName")
print(value)
Извлеките поля формы из PDF-документа в JSON
Существует два способа экспортировать данные AcroForm в JSON. Первый использует встроенный метод export_json класса Form, который сериализует все данные полей напрямую в файловый поток за один вызов.
- Создайте объект
Form, передав путь к входному файлу. - Откройте выходной файл как двоичный поток с помощью
FileIO. - Вызовите
form.export_json(stream, True), чтобы записать JSON-вывод.
import aspose.pdf as apdf
from io import FileIO
from os import path
path_infile = path.join(self.dataDir, infile)
path_outfile = path.join(self.dataDir, outfile)
form = apdf.facades.Form(path_infile)
with FileIO(path_outfile, "w") as json_file:
form.export_json(json_file, True)
Второй подход строит словарь Python из field_names и get_field, а затем сериализует его с помощью json.dumps. Используйте этот вариант, если нужно преобразовать или отфильтровать данные перед записью.
- Переберите
form.field_namesи заполните словарь значениями полей. - Сериализуйте словарь с помощью
json.dumps(form_data, indent=4). - Запишите полученную JSON-строку в выходной файл.
import aspose.pdf as apdf
from os import path
import json
path_infile = path.join(self.dataDir, infile)
path_outfile = path.join(self.dataDir, outfile)
form = apdf.facades.Form(path_infile)
form_data = {}
# Get values from all fields
for formField in form.field_names:
form_data[formField] = form.get_field(formField)
# Serialize to JSON
json_string = json.dumps(form_data, indent=4)
print(json_string)
with open(path_outfile, "w", encoding="utf-8") as json_file:
json_file.write(json_string)
Извлеките данные в XML из PDF-файла
Экспорт в XML полезен при интеграции данных PDF-форм с системами, которые принимают структурированные XML-каналы или схемы. Класс Form предоставляет метод export_xml, выполняющий преобразование за один шаг.
- Создайте экземпляр
Formи привяжите PDF с помощьюform.bind_pdf(path). - Откройте выходной файл как двоичный поток.
- Вызовите
form.export_xml(stream), чтобы записать все данные полей в формате XML.
import aspose.pdf as apdf
from io import FileIO
from os import path
path_infile = path.join(self.dataDir, infile)
path_outfile = path.join(self.dataDir, outfile)
# Create Form object
form = apdf.facades.Form()
# Bind PDF document
form.bind_pdf(path_infile)
# Export data to XML file
with FileIO(path_outfile, "w") as f:
form.export_xml(f)
Экспортируйте данные в FDF из PDF-файла
FDF (Forms Data Format) является стандартным форматом обмена данными AcroForm и широко поддерживается PDF-просмотрщиками и инструментами обработки. Используйте export_fdf класса Form, чтобы создать отдельный FDF-файл, который можно импортировать обратно в исходный PDF или другую совместимую форму.
- Создайте экземпляр
Formи привяжите исходный PDF с помощьюform.bind_pdf(path). - Откройте выходной файл как двоичный поток.
- Вызовите
form.export_fdf(stream), чтобы записать данные FDF.
import aspose.pdf as apdf
from io import FileIO
from os import path
path_infile = path.join(self.dataDir, infile)
path_outfile = path.join(self.dataDir, outfile)
# Create Form object
form = apdf.facades.Form()
# Bind PDF document
form.bind_pdf(path_infile)
# Export form data to an FDF file
with FileIO(path_outfile, "w") as f:
form.export_fdf(f)
Экспортируйте данные в XFDF из PDF-файла
XFDF (XML Forms Data Format) является XML-ориентированным развитием FDF и лучше подходит для использования в веб-сервисах и современных конвейерах обработки данных. Как и FDF, XFDF-файл можно импортировать обратно в совместимую PDF-форму. Используйте export_xfdf класса Form, чтобы сформировать выходной файл.
- Создайте экземпляр
Formи привяжите исходный PDF с помощьюform.bind_pdf(path). - Откройте выходной файл как двоичный поток.
- Вызовите
form.export_xfdf(stream), чтобы записать данные XFDF.
import aspose.pdf as apdf
from io import FileIO
from os import path
path_infile = path.join(self.dataDir, infile)
path_outfile = path.join(self.dataDir, outfile)
# Create Form object
form = apdf.facades.Form()
# Bind PDF document
form.bind_pdf(path_infile)
# Export form data to an XFDF file
with FileIO(path_outfile, "w") as f:
form.export_xfdf(f)