XFA (XML Forms Architecture) was Adobe's attempt to bring XML-based dynamic forms to PDF, introduced in Acrobat 6 and widely deployed in enterprise document management through the 2000s and early 2010s. XFA forms look like PDFs but are actually XML applications rendered inside the PDF container — a different beast entirely from the standard AcroForm interactive form fields that every PDF viewer supports. In PDF 2.0 (ISO 32000-2:2017), XFA was officially deprecated. Most modern PDF viewers — including Firefox, Chrome, Edge, and recent Safari — simply do not support XFA. An XFA form viewed in a non-supporting viewer renders as a blank page or shows a generic "This document requires Adobe Acrobat" message. Adobe itself has been gradually deprecating XFA support in newer Acrobat versions. If you have XFA forms in your organisation's document inventory, migration to AcroForm is no longer optional — it is an operational necessity. This guide explains the migration paths available, what tools exist, what conversion fidelity to expect, and what to do when automation is not enough.

XFA vs AcroForm: what actually differs

Understanding why XFA migration is complex requires understanding what XFA actually is: XFA forms are XML applications. The XFA form definition lives in an XML packet embedded in the PDF's /AcroForm /XFA stream entry. This XML defines form fields, layout, data binding, validation scripts (JavaScript/FormCalc), event handlers, master pages, subforms, and dynamic content. When Acrobat renders an XFA form, it essentially runs an XML application engine — not a PDF renderer. The visible form is generated dynamically from the XFA XML. XFA features that have no AcroForm equivalent: - Dynamic layout: form sections that grow or collapse based on field values (e.g., add rows to a table) - Data binding: fields bound to XML data nodes via XPath expressions - FormCalc scripting: a proprietary scripting language used by many XFA forms - Subform repeat: dynamically repeating subform instances - Flow content: flowing text that wraps across pages AcroForm fields are first-class PDF objects: Widget annotation dictionaries in the /AcroForm /Fields array. Each field has a position, appearance, type, value, and JavaScript event handlers. AcroForm is a fixed-layout model — fields are placed at absolute coordinates, just like other PDF annotations. The key implication: any XFA form feature that requires dynamic layout, data binding, or FormCalc scripting has no direct AcroForm equivalent. Migration of these features requires design decisions about how to approximate the functionality in the static AcroForm model.

Migration strategies and tools

Static XFA forms (simplest case) — Many XFA forms in practice are static: they use XFA's XML form definition but don't actually use dynamic layout or data binding. They appear and behave identically to AcroForm forms. For these, automated conversion tools can often produce high-quality AcroForm equivalents. Adobe Acrobat Pro — Acrobat can save some XFA forms as "static PDF" which renders the XFA to a fixed page and creates AcroForm widgets over the form fields. The output quality varies; complex forms with scripts typically lose functionality. File > Export > Export to Different Format > Flattened PDF can produce a static (non-interactive) version. iText 7 / Bouncy Castle — iText's Java/C# library has XFA-to-AcroForm migration utilities. The XFAFlattener renders XFA to a fixed PDF and provides hooks for script translation. Commercial license required for non-AGPL use. iText publishes XFA migration documentation. Adobe LiveCycle Designer — If the original LiveCycle Designer source (.xdp files) is available, the cleanest migration is to redesign the form natively in AcroForm using Acrobat Pro or an alternative form builder. This is labour-intensive but produces the best result. FormBridge — A commercial service specifically targeting XFA-to-HTML5/AcroForm migration for enterprise form estates. Custom extraction scripts — For large form libraries, parsing the XFA XML directly with an XML library and generating AcroForm equivalents programmatically (using iText, pdfbox, or pdf-lib) can process bulk forms. This requires XFA schema knowledge and significant development effort.

Handling scripts: JavaScript and FormCalc

XFA forms often contain validation, calculation, and visibility logic written in JavaScript or FormCalc. This is the hardest part of XFA migration: JavaScript migration — AcroForm supports JavaScript via /AA (additional actions) triggers (field change, mouse enter/exit, validate, calculate). XFA's JavaScript model differs: it uses the XFA object model (xfa.form.*, xfa.data.*) rather than the AcroForm/Acrobat JavaScript API. Scripts must be rewritten to use the AcroForm object model. Logic that depends on dynamic layout or data binding has no AcroForm equivalent and must be redesigned. FormCalc — FormCalc is a proprietary scripting language with no AcroForm equivalent. FormCalc scripts must be converted to JavaScript or the logic must be reimplemented. Adobe published FormCalc documentation that aids in translation, and some common FormCalc functions (Sum, If, Concat) have straightforward JavaScript equivalents. Practical approach: 1. Audit your XFA form inventory: categorise forms as static (no scripts), simple-scripts (JS/FormCalc without dynamic layout), or complex (dynamic layout, data binding). 2. Static forms: use automated conversion tools. 3. Simple-script forms: convert and manually translate scripts. 4. Complex forms: plan a redesign, possibly replacing with HTML5 web forms integrated with your document management system. PDF/UA compliance is an important consideration during migration — AcroForm fields must have accessible labels (/TU tooltip, correct tab order). See PDF Forms Best Practices for accessible form field requirements.