¿Cómo puedo aplanar un formulario PDF de XFA usando iTextSharp?

Supongo que tengo que aplanar un formulario XFA para mostrarlo correctamente en la interfaz de usuario de una aplicación que utiliza el CSDK de Nuance. Cuando lo proceso ahora recibo un mensaje genérico “Espere … si este mensaje no se reemplaza eventualmente …”.

Buscando un ejemplo de código iTextSharp para hacer esto.

No insertó un ejemplo de código para mostrar cómo está actualizando el formulario XFA. Supongo que su código se ve así:

var reader = new PdfReader(existingFileStream); var stamper = new PdfStamper(reader, newFileStream); var form = stamper.AcroFields; var fieldKeys = form.Fields.Keys; foreach (string fieldKey in fieldKeys) { form.SetField(fieldKey, "X"); } stamper.FormFlattening = true; stamper.Close(); reader.Close(); 

Este código funcionará cuando se intente aplanar formularios basados ​​en la tecnología AcroForm, pero no se puede usar para formularios basados ​​en la Arquitectura de formularios XML (XFA).

Un formulario XFA dynamic por lo general consiste en un PDF de una sola página (el que tiene el mensaje “Espere …”) que se muestra en el visor y que no comprende XFA. El contenido real del documento se almacena como un archivo XML.

El proceso de aplanar un formulario XFA a un PDF ordinario requiere que analice el XML y convierta la syntax XML en syntax PDF. Esto se puede hacer utilizando iText’s XFA Worker: http://itextpdf.com/product/xfa_worker

Supongamos que tiene un archivo en la memoria ( ms ) que consiste en un formulario XFA que se completa, luego puede usar el siguiente código para aplanar ese formulario:

 Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(dest, FileMode.Create)); XFAFlattener xfaf = new XFAFlattener(document, writer); ms.Position = 0; xfaf.Flatten(new PdfReader(ms)); document.Close(); 

Puede descargar un archivo zip que contiene las DLL para XFA Worker, así como un ejemplo aquí: http://itextsupport.com/download/xfa-net.zip

Sin embargo, como muchos desarrolladores están utilizando la versión AGPL de iTextSharp en un contexto comercial sin comprar una licencia comercial, hemos decidido no abrir el XFA Worker de código fuente. Puede obtener una clave de licencia por un período de prueba, pero es un producto comercial construido sobre la versión comercial de iTextSharp. XFA Worker solo puede utilizarse en producción si compra una licencia de iText Software. Esto también es cierto para iTextSharp, pero con iTextSharp, no hay una clave de licencia que impida su uso si no compra una licencia comercial. Para iTextSharp, contamos con honestidad. Para XFA Worker, tomamos algunas precauciones 😉