En un proyecto en el que estoy trabajando, tengo el requisito de generar un PDF. Este PDF contendrá solo texto, y el contenido del texto será bastante variable. La mayor parte del texto debe imprimirse en párrafos separados impresos uno debajo del otro. En caso de que el párrafo no quepa en una página, simplemente debe agregarse a la siguiente. Debe ser gratuito (como en la cerveza, preferiblemente como en código abierto también) y estable (no un proyecto de juguete).
Como nota al margen, el proyecto en sí se utilizará comercialmente. Los usuarios podrán enviar una llamada a la API y se generará un PDF específico para ellos (su contenido es en lo que nos especializamos).
Según ¿Cuál es la mejor biblioteca de código abierto de PDF para Java? [cerrado] en StackOverflow, su mejor apuesta podría ser iText :
iText es una biblioteca PDF que le permite CREAR, ADAPTAR, INSPECCIONAR y MANTENER documentos en formato de documento portátil (PDF): - Generar documentos e informes basados en datos de un archivo XML o una base de datos - Crear mapas y libros, aprovechando numerosos funciones disponibles en PDF - Agregar marcadores, números de página, marcas de agua y otras funciones a documentos PDF existentes - Dividir o concatenar páginas de archivos PDF existentes - Rellenar formularios interactivos - Entregar documentos PDF manipulados o generados dinámicamente en un navegador web
Los desarrolladores de Java, .NET, Android y GAE utilizan iText para mejorar sus aplicaciones con la funcionalidad de PDF.
Varios ingenieros de iText apoyan activamente el proyecto en StackOverflow: https://stackoverflow.com/questions/tagged/itext
Esta biblioteca parece ser gratuita para uso personal.
Apache FOP , en combinación con Freemarker , es una excelente solución para configurar un sistema de plantillas simple para generar archivos PDF con poco más que texto y algunas imágenes básicas.
Freemarker se utiliza para crear plantillas dinámicas que dan como resultado un XML al estilo de:
<letter>
<paragraph>Some static content always in here</paragraph>
<paragraph>Bla bla bla</paragraph>
<paragraph>Foo foo foo</paragraph>
</letter>
Donde el bla bla bla y el foo foo foo en realidad provienen de una Lista en un POJO. FOP también se puede usar para crear este XML (o tener una plantilla completamente dinámica), pero parece más frágil hacerlo.
Luego, Apache FOP se usa para crear un XML a partir del PDF. Básicamente le dices a FOP que para un "párrafo" tiene que crear un bloque de texto en el PDF con ciertas especificaciones.
De esa manera, puede usarlo como si usara CSS en una página web común y dividir totalmente la generación y estructura del contenido (Freemarker) y la presentación final (Apache FOP).
Kristof
hola
Kristof
Kristof
Ángelo Fuchs