¿Cómo puedo combinar los datos en un archivo XDP y devolver un PDF (vía NET)?
-
20-09-2019 - |
Pregunta
Mi equipo tiene una plantilla (XDP) que hemos creado con el diseñador de Adobe LiveCycle.
La situación:
-
Estamos reemplazando una forma antigua de Acrobat (Formato XFDF) con este LiveCycle forma como parte de una actualización mucho más grande
-
La forma corriente es Acrobat dinámicamente poblado con los datos básicos y entregado al usuario en formato PDF (El usuario hace clic en un enlace y un PDF se abre en su máquina de pre-poblada con datos demográficos básicos)
-
El proceso actual se ve algo como: el usuario hace clic, .NET aplicación recupera datos, .NET aplicación recupera PDF a partir del sistema de archivos, .NET aplicación serializa los datos en la plantilla en forma XFDF, ASP.NET aplicación envía una respuesta HTTP de nuevo al usuario en formato XFDF, el usuario visualiza el PDF en Adobe Reader
Nos gustaría mantener un proceso más o menos análoga con el nuevo formato XDP.
Para el registro, que DO tienen acceso a los servicios de LiveCycle que hacen este tipo de trabajo (por ejemplo, el servicio Render). Dicho esto, nos gustaría crear este tipo de serialización en .NET por varias razones:. Hemos limitado licencias LiveCycle y lucharemos para acceder a los servicios de LiveCycle debido a su ubicación en la empresa
Cualquier pensamiento (incluso "dejar de hacer eso, estás loco") son apreciados.
Solución
Hey, lo siento por la lenta respuesta, no ver esto.
Crea el PDF. Codificarlo como base 64.
Crea un archivo de texto, foo.xdp:
<?xml version='1.0' encoding='UTF-8'?>
<?xfa generator='AdobeDesigner_V7.0' APIVersion='2.2.4333.0'?>
<xdp:xdp xmlns:xdp='http://ns.adobe.com/xdp/'>
<xfa:datasets xmlns:xfa='http://www.xfa.org/schema/xfa-data/1.0/'>
<xfa:data>
Introduzca el código XML aquí es que los datos dinámicos, haciendo coincidir los campos dinámicos en el PDF.
</xfa:data>
</xfa:datasets>
<pdf xmlns=\"http://ns.adobe.com/xdp/pdf/\"><document>
<chunk>
Sin poner ningún carácter después de la etiqueta, insertar los base64 PDF codificado.
</chunk>
</document></pdf>
</xdp:xdp>
Y, he aquí que, usted tiene un XDP válida. Adobe Reader aceptará esto y mostrar el PDF con sus valores en el mismo.
En Java, si usted tiene un Propiedades con los detalles de la conexión en el mismo, el siguiente código se puede utilizar para convertir una Livecycle XDP a un PDF, aunque su kilometraje puede variar en C #.
// Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory
.createInstance(connectionProperties);
// Create a PDF Utility client
PDFUtilityServiceClient pdfClient = new PDFUtilityServiceClient(myFactory);
// Specify an XDP file to convert to a PDF document
ByteArrayInputStream bais = new ByteArrayInputStream(xdp.getBytes("ASCII"));
Document inDoc = new Document(bais);
// Convert the XDP file to a PDF document
Document pdf = pdfClient.convertXDPtoPDF(inDoc);
// Return the PDF as an InputStream.
return pdf.getInputStream();
Otros consejos
Parece que estás en busca de representación del lado cliente - algo que en realidad nunca he sido capaz de utilizar de manera viable. Y dado que usted está trabajando en .Net que va a hacer las cosas probablemente imposible ..
En mi opinión la mejor opción será definitivamente a utilizar el servicio de render que viene con Forms ES. Probablemente no ayuda mucho, pero bueno:)