pagina - itext java table examples
Cómo automatizar el llenado de formularios PDF en Java (2)
Estoy haciendo un desarrollo "pro bono" para una despensa de alimentos cerca de donde vivo. Están inundados de formularios y papeleo, y me gustaría desarrollar un sistema que simplemente lea datos de su servidor MySQL (que configuré para ellos en un proyecto anterior) y alimente datos en versiones PDF de todos los formularios que se requieren para llenar. Esto les ayudará enormemente y les ahorrará mucho tiempo, además de deshacerse de una gran cantidad de errores humanos que se producen al completar estos formularios.
Sin saber nada sobre las partes internas de los archivos PDF, puedo prever dos vías aquí:
- Harder Way : es posible escanear un documento en papel, convertirlo en PDF y luego tener un software que "completa" el PDF simplemente diciendo "agregar texto excepto blah a las siguientes coordenadas (x, y) ..." ; o
- Manera más fácil : la especificación de PDF ya permite la construcción de "campos" que se pueden completar; de esta manera, simplemente escribo un código que dice "agregar texto extraído blah al campo llamado * address_value * ...", etc.
Entonces mi primera pregunta es: ¿a cuál de las dos avenidas me estoy enfrentando? ¿El PDF tiene un concepto de "campos" o necesito "completar" estos documentos al decirle a la biblioteca PDF las coordenadas de píxeles de dónde colocar los datos?
En segundo lugar, obviamente necesito una biblioteca de código abierto (y Java) para hacer esto. iText parece ser un buen comienzo, pero he escuchado que puede ser difícil trabajar con él. ¿Alguien puede prestar algunas ideas o recomendaciones generales aquí? ¡Gracias por adelantado!
Consulte el capítulo sobre formularios interactivos en el libro electrónico gratuito The Best iText Questions on . Agrupa las respuestas a preguntas tales como:
- ¿Cómo completar un archivo pdf programáticamente?
- ¿Cómo puedo aplanar un formulario PDF de XFA usando iTextSharp?
- Marcando checkbox en pdf con itextsharp
- ¿Cómo continuar la salida de campo en una segunda página?
- averiguar los campos obligatorios para completar el archivo pdf
- y así...
O puede ver este video donde explico cómo usar los formularios para informar paso a paso.
Ver por ejemplo:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader,
new FileOutputStream(dest));
AcroFields fields = stamper.getAcroFields();
fields.setField("name", "CALIFORNIA");
fields.setField("abbr", "CA");
fields.setField("capital", "Sacramento");
fields.setField("city", "Los Angeles");
fields.setField("population", "36,961,664");
fields.setField("surface", "163,707");
fields.setField("timezone1", "PT (UTC-8)");
fields.setField("timezone2", "-");
fields.setField("dst", "YES");
stamper.setFormFlattening(true);
stamper.close();
reader.close();
}
Puede fusionar fácilmente datos en campos de PDF utilizando la tecnología FDF (Formato de datos de formulario).
Adobe proporciona una biblioteca para hacer eso: Kit de herramientas de formato de datos de Acrobat (FDF)
También Apache PDFBox se puede usar para hacer eso.