Извлечение данных из AcroForm с помощью Python

Извлеките поля формы из PDF-документа

Form из пространства имен aspose.pdf.facades предоставляет простой способ читать данные полей AcroForm без открытия полной объектной модели документа. Переберите form.field_names, чтобы получить имена всех полей формы, затем вызовите form.get_field(name), чтобы получить их текущие значения.

  1. Создайте объект Form, передав путь к входному файлу.
  2. Переберите form.field_names, чтобы перечислить все имена полей.
  3. Вызовите 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), не перебирая всю коллекцию полей. Это самый быстрый подход, когда нужны только отдельные поля.

  1. Создайте объект Form, передав путь к входному файлу.
  2. Вызовите form.get_field("FieldName"), указав точный заголовок поля, как он задан в PDF.
  3. Используйте возвращённое строковое значение в приложении.

    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, который сериализует все данные полей напрямую в файловый поток за один вызов.

  1. Создайте объект Form, передав путь к входному файлу.
  2. Откройте выходной файл как двоичный поток с помощью FileIO.
  3. Вызовите 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. Используйте этот вариант, если нужно преобразовать или отфильтровать данные перед записью.

  1. Переберите form.field_names и заполните словарь значениями полей.
  2. Сериализуйте словарь с помощью json.dumps(form_data, indent=4).
  3. Запишите полученную 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, выполняющий преобразование за один шаг.

  1. Создайте экземпляр Form и привяжите PDF с помощью form.bind_pdf(path).
  2. Откройте выходной файл как двоичный поток.
  3. Вызовите 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 или другую совместимую форму.

  1. Создайте экземпляр Form и привяжите исходный PDF с помощью form.bind_pdf(path).
  2. Откройте выходной файл как двоичный поток.
  3. Вызовите 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, чтобы сформировать выходной файл.

  1. Создайте экземпляр Form и привяжите исходный PDF с помощью form.bind_pdf(path).
  2. Откройте выходной файл как двоичный поток.
  3. Вызовите 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)