> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/web/forms/forms.md).

# JavaScript Library for PDF Fillable Forms

Empower your web applications with WebViewer, a versatile JavaScript PDF library for seamless form filling. Enhance user interaction with customizable fields and actions. Optimize PDF forms effortless

WebViewer is a JavaScript PDF library that provides support for interactive forms which are a collection of fields for gathering information interactively from the user.

An interactive form (sometimes referred to as an *AcroForm*) is a collection of fields (such as text boxes, checkboxes, radio buttons, drop-down lists, and pushbuttons) for gathering information interactively from the user. A PDF document may contain any number of Fields appearing on any combination of pages. All these fields make up a single, global interactive form spanning the entire document. While PDF forms are similar to HTML forms, there are some important differences:

* Unlike HTML pages, a PDF document has a single, global interactive form spanning the entire document.
* In PDF documents, the field and value appearance can be completely customized. Although field appearances give incredible customization power to PDF forms, developers need to learn to work with forms where field's value and appearance are two different entities.
* The PDF format supports combo boxes with text editing.
* In the PDF format, it's possible to associate fields with different kinds of Actions (or Action chains).

Apryse SDK fully supports reading, writing, and editing PDF forms and provides utility methods to make working with forms simple and efficient. Using the Apryse SDK forms API, arbitrary subsets of form fields can be imported or exported from the document, new forms can be created from scratch, and the appearance of existing forms can be modified.

Forms Data Format (FDF) and XML Forms Data Format (XFDF) contain a list of Form Fields with their associated values. These formats can be used to import and export form data to and from PDF Form Fields.

Apryse SDK benefits include:

* Fill PDF Forms
* Read PDF form field values
* PDF form field flattening
* Support for all form field properties and appearances
* Support for encrypted PDF forms
* Support for FDF (Forms Data Format)
* Import FDF to PDF
* Export FDF from PDF
* Forms templating
* Form field name management
* Create new form fields
* Support for JavaScript calculation in forms

Major features of WebViewer form support:

* Rendering of the form field widgets as from the original PDF document
* Dynamic data entry into form field widgets
* Loading and saving of form field data
* Support for a number of form actions, including embedded JavaScript
* Programmatic access to form field data, values and child widgets via the [Annotations.Forms.FieldManager](https://sdk.apryse.com/api/web/Core.Annotations.Forms.FieldManager.html) class
* Ability to add indicators on form field widgets to guide users through the process of form filling

## New in WebViewer 11

New features were added in the WebViewer 11 major release:

* See real-time previews of form fields while creating them - what you see is what you get.
* Access and manage all your form fields through a new modular UI panel.
* Ability to style border and fill colors for all form fields.

## Demos

[Form Build](https://showcase.apryse.com/pdf-form-build) [Form Fill](https://showcase.apryse.com/pdf-forms) [Form Flatten](https://showcase.apryse.com/flatten-form) [Form Field Detection](https://showcase.apryse.com/field-detection) (Beta)

## Get started

[Importing and exporting forms](/web/forms/import-export.md) To import and export annotations with a PDF document.

[Explore the form builder](/web/forms/form-builder/form-builder-webviewer-11.md) To learn how to navigate the form builder UI for filling and modifying PDF forms.

[Create new form fields and widget annotations](/web/forms/create-fields.md) To create new form fields and widget annotations within a new document.

[Working with form fields and widget annotations](/web/forms/working-with-fields.md) To update form field values, update widget flags, configure multiple widgets for one field, and more.

[Modify form fields](/web/forms/modify-fields.md) To modify properties for existing form fields.

[Fill form fields](/web/forms/fill-fields.md) To fill values for existing form fields.

[Styling form fields](/web/forms/form-field-styling.md) To fill in values for existing form fields.

[Form flattening](/web/forms/flatten-forms.md) To flatten form fields in a PDF document.

[Form Field Indicators](/web/forms/forms/add-form-field-indicators.md) To add visual indicators for guiding users through form filling.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/web/forms/forms.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
