XFA forms are not supported by this readerXFA forms are an Adobe-proprietary format only supported by Acrobat and Reader. Most viewers show a blank page or this error.
XFA is an Adobe proprietary standard that requires a dedicated rendering engine. Browsers (Chrome, Firefox, Safari), macOS Preview, Linux PDF viewers (Evince, Okular), and most non-Adobe mobile apps do not implement XFA. They display the fallback content defined in the PDF — often a blank page or a message asking the user to open in Acrobat.
Adobe deprecated XFA in PDF 2.0 (ISO 32000-2) and has been discouraging its use since 2017. Even in Adobe Reader, XFA support may be disabled in newer versions or restricted in certain deployment modes (e.g. Reader in browser mode).
XFA PDFs can optionally include a pre-rendered AcroForm representation for viewers that don't support XFA. If the creator didn't include a fallback, non-XFA viewers render a blank page. This is the most common reason the form appears completely empty.
If you don't need the fields to remain interactive — for example, you're archiving a completed form — flatten the XFA into a static PDF. This removes all form logic and produces a plain document any viewer can display.
use pdfluent::PdfDocument;
let mut doc = PdfDocument::open("completed-xfa-form.pdf")?;
// Flatten XFA into a non-interactive static PDF
doc.flatten_xfa()?;
doc.save("flattened-output.pdf")?;When the form logic matters more than the rendering, read the field model out of the document and work with the values. PDFluent gives you the fields and their values; producing a new document from them is a job for whatever generates your other documents, because PDFluent has no authoring API.
use pdfluent::PdfDocument;
let mut doc = PdfDocument::open("xfa-form.pdf")?;
let model = doc.xfa_form_model()?;
println!("{} fields over {} layout pages", model.fields.len(), model.page_count);
for field in &model.fields {
println!("{} = {:?} ({:?})", field.name, field.value, field.field_type);
}