java pdf itext

java - Edite el PDF incrustado en el navegador y guarde el PDF directamente en el servidor



itext (1)

Mi suposición: tiene un documento PDF interactivo con campos AcroForm similares a submit_me.pdf :

La principal diferencia es que tengo diferentes botones en el formulario:

  • POST publicará los datos que complete como si el PDF fuera un formulario HTML,
  • FDF publicará los datos en el servidor en el formato de datos de formularios, un formato que es muy similar al PDF, pero que solo contiene los pares de datos, no el formulario real,
  • XFDF publicará los datos en el servidor en el formato de datos de formularios XML, que es la versión XML del formato de datos de formularios.
  • RESET restablecerá todos los campos a su valor inicial.

El ejemplo SubmitForm muestra cómo se agregaron los botones a un formulario existente. Tenga en cuenta que hay más opciones que las descritas en este ejemplo.

Por ejemplo:

  • En lugar de usar el método POST, también puede usar GET ajustando algunos de los parámetros,
  • También puede enviar el PDF completo (datos + formulario) al servidor, pero esto solo funcionará si el usuario final tiene Adobe Acrobat como complemento. Esto no funcionará si el complemento es simplemente Adobe Reader,
  • ...

Para mostrarle qué esperar cuando confirma un formulario, escribí el servlet ShowData . Este servlet devuelve los bytes que se envían al servidor.

En caso de una POST:

personal.loginname=jdoe&personal.name=John+Doe&personal.password=test&personal.reason=reason&post.x=29&post.y=7

Tenga en cuenta que también definí el botón de tal manera que la coordenada de mi clic se pasa al servidor. Probablemente no necesites esto.

En caso de FDF:

%FDF-1.2 %âãÏÓ 1 0 obj <</FDF<</Fields[<</T(FDF)>><</Kids[<</T(loginname)/V(jdoe)>><</T(name)/V(John Doe)>><</T(password)/V(test)>><</T(reason)/V(Reason)>>]/T(personal)>>]/ID[<EF0089E16ED50F11CB6057A700B9046E><1205D069D1D6AE37665B6FF7EEA65414>]>>/Type/Catalog>> endobj trailer <</Root 1 0 R>> %%EOF

En caso de XFDF:

<?xml version="1.0" encoding="UTF-8"?> <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve" ><f href="http://itextpdf.com:8180/book/submit_me.pdf" /><fields ><field name="XFDF" /><field name="personal" ><field name="loginname" ><value >jdoe</value ></field ><field name="name" ><value >John Doe</value ></field ><field name="password" ><value >test</value ></field ><field name="reason" ><value >Reason</value ></field ></field ></fields ><ids original="EF0089E16ED50F11CB6057A700B9046E" modified="1205D069D1D6AE37665B6FF7EEA65414" /></xfdf >

En un mundo ideal, esta sería su solución. Se describe en ISO-32000-1, que es el estándar mundial para PDF. Sin embargo: muchas personas comenzaron a usar visores de PDF desagradables que no admiten esta funcionalidad, por lo que si desea utilizar esta solución, deberá asegurarse de que las personas usen un visor de PDF decente como complemento de su navegador.

Tengo este flujo de trabajo.

  1. Cargue un pdf que contenga campos de formulario en el navegador (pdf en iframe o div).
  2. Un usuario lo llena
  3. Un usuario hace clic en el botón ''Enviar'' (en otro div) para guardar el pdf.

Lo que me gustaría hacer en el n. ° 3 es recopilar todos los datos asociados con los campos del formulario y guardarlos en la tabla de la base de datos. No quiero que un usuario guarde el pdf en su computadora local y lo cargue en el servidor. Me gustaría hacerlo más fácil de usar.

Voy a usar Java / JSP / Servlet en el lado del servidor. Miré el itext que parece ser popular / conocido por manejar un archivo pdf, pero parece que el itext se usa para generar / editar un pdf, pero no estoy seguro de si hay alguna forma de que una característica pueda edite un pdf incrustado en el navegador y guárdelo en la base de datos.

¿Existe algún software de adobe que ofrezca algún tipo de función que pueda inyectar algún tipo de script que pueda capturar el envío de un usuario? Sé que PDF no es un lenguaje de scripting front-end, pero solo pregunto.

Iba a crear un formulario HTML que se parece a este PDF y llenarlo en el PDF cuando un usuario hace clic en el botón ''enviar'', pero como dije, me gustaría hacerlo más fácil de usar.

Apreciaría que si alguien ha visto este tipo de función o lo ha hecho, me da algunos recursos o consejos.