Skip to content

Epic: Add form fields and PDF form interoperability #8264

Description

@vitormattos

LibreSign needs a consistent way to create, persist, fill, import and sign document fields.

This epic is the main roadmap for form-field support across LibreSign and related projects. Implementation details should stay in focused issues in each repository.

LibreSign should have its own field domain model. PDF AcroForm should be treated as an interoperability format, not as LibreSign's internal model.

Note

This epic defines the goal, architecture and scope.
Pull requests should implement focused child issues, not the epic itself.

Important

Funding and community support needed

This is a large feature that affects the PDF editor, LibreSign domain and API, PDF interoperability, signing engines, templates and automated tests.

We are looking for organizations interested in funding this work and for contributors who want to help implement the roadmap.

Companies that need advanced form fields, reusable document templates or AcroForm interoperability are especially welcome to support the development of this feature.

Community contributions are also welcome. Please use the focused issues linked below instead of trying to implement the complete epic in one pull request.

Architecture

The responsibilities should remain separated:

pdf-elements
  browser rendering and field editing
        |
        v
LibreSign domain / API
  fields, recipients, values, validation and audit
        |
        +----------------------+
        |                      |
        v                      v
PDF form backend          signing engines
read / write / fill       signer-php / JSignPdf
AcroForm                  sign / validate

A logical field is not necessarily one visible rectangle. The model must support one field with multiple widgets, including widgets on different pages and radio groups.

Roadmap

1. PDF editor foundation

Work is tracked in LibreSign/pdf-elements:

Do not create one issue for every field type before the shared model and editing foundation are stable.

2. LibreSign field domain and API

LibreSign needs a domain model independent from the browser editor and PDF library.

It should cover:

  • field identity and semantic type;
  • widgets and document/page placement;
  • values, defaults and validation;
  • required and read-only state;
  • choice options;
  • recipient association;
  • source/origin such as manual, AcroForm, template or API;
  • API serialization;
  • audit-relevant changes.

Vendor-specific PDF objects should not be exposed through the LibreSign domain or API.

3. PDF form backend

LibreSign needs an internal abstraction for PDF form operations instead of using one vendor library throughout the application.

Expected capabilities include:

  • inspect existing AcroForm fields;
  • read field hierarchy and widgets;
  • fill existing fields;
  • create or update supported fields;
  • preserve forms during incremental updates;
  • optionally flatten fields when explicitly required;
  • report unsupported PDF features without silently damaging documents.

The selected PHP PDF library must be validated with real-world PDFs, including xref/object streams, multiple widgets, Unicode, incremental updates and signed documents.

A separate LibreSign repository is not required for this adapter unless a concrete reuse case appears later.

4. AcroForm interoperability

Expected flow:

PDF AcroForm
     |
     v
import / transform
     |
     v
LibreSign fields
     |
     v
workflow values and recipients
     |
     v
PDF backend + signing engine

Initial interoperability should consider text fields, checkboxes, radio groups, choice fields, hierarchy, inherited properties, multiple widgets, required/read-only flags and existing signature fields.

XFA should be detected and reported as unsupported unless support is intentionally added later.

5. Signature workflow integration

Fields should become part of the signature-request domain rather than only coordinates rendered over a PDF.

This includes:

  • assigning fields to recipients where applicable;
  • validating required fields;
  • collecting and preserving values;
  • writing values to the final PDF;
  • exposing field state through the API;
  • recording relevant field changes in the audit trail.

6. Preserve PDF signature semantics

Form manipulation and digital signing must remain separate responsibilities.

The PDF backend prepares allowed document changes. Signing engines sign and validate the resulting revision.

The implementation must respect existing incremental signatures and certification permissions:

  • DocMDP P=1: no changes;
  • P=2: form filling and signatures;
  • P=3: form filling, signatures and annotations.

FieldMDP can be added later, but the architecture must not prevent future support.

Existing PDF signature fields should also be supported when the signing backend provides this capability.

7. Templates and reuse

Stable fields should later support reusable document templates where field definitions are preserved independently from the final recipient assignment.

Related issue:

Existing LibreSign issues

These issues describe user needs that should be solved by or aligned with this roadmap.

Visible fields and editor

Field types and dynamic values

Reuse and document workflows

PDF integrity and signing

These issues should remain focused on their original user need. This epic provides the shared architecture and implementation order.

Related repositories

LibreSign/pdf-elements

Generic Vue editor and visual field/widget model. It must remain usable outside LibreSign and Nextcloud.

LibreSign/signer-php

Signing-specific support may be needed to preserve AcroForm during incremental signing, sign existing signature fields and support safe fill-then-sign workflows.

Generic PDF form editing should not be implemented in the signing library.

JSignPdf/jsignpdf-php

The wrapper should expose stable JSignPdf support for discovering and signing existing PDF signature fields when that feature is available.

PHP PDF library

LibreSign needs a maintained PHP library for AcroForm read/write operations.

Where practical, missing capabilities should be contributed upstream instead of maintaining LibreSign-specific forks.

Testing

Tests should cover the complete interoperability path using representative and externally generated PDF fixtures where possible.

Important cases include:

  • different page sizes and rotations;
  • text, checkbox, radio and choice fields;
  • field hierarchy;
  • multiple widgets;
  • Unicode;
  • existing signature fields;
  • incremental updates and already-signed PDFs.

pdf-elements should test browser interaction. LibreSign should test domain/API behavior. The PDF backend should test interoperability. Signing engines should test signing integrity.

Scope control

This epic is a roadmap, not a single implementation task.

Create focused issues when each stage is ready. Avoid speculative issues for every possible field type before the shared infrastructure is available.

Completion

This epic is complete when LibreSign can:

  • create and persist form fields;
  • edit them using pdf-elements;
  • assign relevant fields to recipients;
  • collect and validate values;
  • import supported AcroForm fields;
  • write supported values safely to PDFs;
  • sign without losing form or previous-signature integrity;
  • reuse field definitions in workflows such as templates;
  • validate the supported path with automated tests.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    • Status
      0. Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions