Cómo generar PDF desde un script de shell usando Groovy
sábado 08/09/2007
Groovy scripts
Como ya sabéis, con Groovy es posible escribir scripts, ficheros con instrucciones que se ejecutan sin tener que estar en una clase (en realidad se crea una clase al ejecutarlo, pero eso es transparente a nosotros). Para ejecutarlos, simplemente guardamos el script en un archivo de texto y lo ejecutamos con "groovy archivo.groovy".
De hecho, en sistemas UNIX, si añadimos la línea "#!/usr/bin/env groovy" al principio del script y le damos permisos de ejecución, podremos hacer directamente "./archivo.groovy" y lo ejecutaremos como cualquier otro script.
Vale, ¿Y?
Pues bien, la cuestión es "¿para qué necesito otro lenguaje de scripts si en linux hay muchos y muy potentes?", y la respuesta es: para poder utilizar todo el conocimiento y las librerías de utilidad que existen en Java.
Un caso particular
GroovyPDF es un proyecto que me permite generar archivos PDF desde Groovy utilizando un constructor ("builder"), por ejemplo (copiado directamente de los ejemplos del proyecto):
Listado 1
#!/usr/bin/env groovy
import be.jameswilliams.PDFBuilder
import com.lowagie.text.pdf.*
import com.lowagie.text.PageSize
import com.lowagie.text.Rectangle
try {
def builder = new PDFBuilder()
def file = 'examples' + File.separator + 'output' + File.separator + 'LandscapePortrait.pdf'
def a = builder.document(filename:file,pageSize:PageSize.LETTER.rotate()){
paragraph(text:"To create a document in landscape format, just make the height smaller than the width. For instance by rotating the PageSize Rectangle: PageSize.LETTER.rotate()")
page(pageSize:PageSize.LETTER) {
paragraph(text:"This should be portrait again.")
}
}
} catch (Exception e) {
e.printStackTrace()
}
Con este script de shell puedo generar un archivo pdf en muy pocas líneas, y sin necesitar conocimientos profundos de Java, ni de iText (la librería que utiliza GroovyPDF).
Aquí tenéis más ejemplos del uso de GroovyPDF.
Conclusión
Groovy también sirve para dar un nuevo enfoque a la forma en que escribimos scripts de mantenimiento de nuestros sistemas, de generación de informes automáticos, de despliegues y copias de seguridad, etc etc etc, al permitirnos utilizar librerías Java para realizar tareas que desde la consola no se pueden realizar o son mucho más complicadas.













