Scribus Generator: Mail Merge con Scribus

Según mi traducción de la definición que se publica en la web de Servicios de Información Tecnológica de la Universidad de Indiana, un mail merge es un método para obtener información de una base de datos, hoja de cálculo, u otro origen con información estructurada, e insertarla en documentos tales como cartas, etiquetas, etc. Usualmente se requieren dos archivos, uno que almacene la información variable que se utilizará y el otro que contenga el formateo de esta información variable y el resto de la información que se mantendrá idéntica en todos los resultados del proceso.
No es, ni más ni menos, que la tarea que se hace habitualmente desde un procesador de textos para personalizar, por ejemplo, cartas.

Scribus Generator es un script, escrito en Phyton por Ekkehard Will, que permite hacer esto mismo, pero desde Scribus.

Veamos un ejemplo ficticio, desde cero y paso a paso, que hace uso de esta característica.
Supongamos que lo que necesitamos es hacer e imprimir unos certificados con lo que vamos a agradecer a varios ilustres integrantes de la comunidad de software libre por sus aportes a la misma. Por lo tanto, los diplomas deberán tener, cada uno, datos personalizados.

 El procedimiento podría constar de cuatro etapas:

  1. Hacer el diseño básico del diploma o certificado en Inkscape.
  2. Guardar en un archivo de Calc (u otra hoja de cálculo) la información variable para la personalización.
  3. En Scribus, importar el archivos creado en la etapa 1, agregarle los textos fijos y los campos variables. Correr el script en cuestión y generar tantos PDFs como filas tenga el archivo guardado en la etapa 2.
  4. Unir todos los PDFs en uno solo con, por ejemplo, PDFChain.

Hacer el diseño básico con Inkscape

  1. Abrir Inkscape. Ir a Archivo / Importar desde Open Clip Art Library… En los criterios de búsqueda escribir «Frames» y elegir el resultado más apropiado. Atención: antes de realizar este paso, conviene ver si el sitio Open Clip Art Library está funcionando, ya que días atrás, estuvo más veces caído que funcionando. Si intentan hacer este paso con el
    sitio caído, Inkscape da error y se cierra.
    Para este ejemplo, elegí Frames Set III (obra de Meister).

  1. De esta manera se obtienen 6 posibles marcos para el certificado en cuestión. Luego, hay que elegir uno de los seis marcos, rotarlo 90 grados, definir el documento de Inkscape en formato A4 horizontal y centrar el marco elegido en la página (y, posiblemente, ajustarle el tamaño):

  1. A continuación hay que agregar algunos elementos gráficos para completar el diseño (los textos se colocarán posteriormente en Scribus). En este caso, agregué el logo del blog y le di color al marco, entre otros detalles, y guardé el archivo:

Guardar la información variable en un archivo de Calc

  1. En esta segunda parte hay que crear el contenido variable. O sea, los textos personalizados.
    Para ello, hay que abrir LibreOffice Calc y generar un documento con, por ejemplo, tres columnas, con los títulos (en la primera fila): nombre, motivo y motivo-ing. Después, en cada fila hay que escribir el nombre del «destinatario» del diploma y el motivo por el que lo recibiría (en la segunda columna en español y en la tercera, en inglés).
  2. Esta es una lista muy parcial de los datos que podría tener ese archivo:
    nombre motivo motivo-ing
    Franz Schmid el programa Scribus Scribus software
    Peter Linnell el programa Scribus Scribus software
    Paul Johnson el programa Scribus Scribus software
    Craig Bradney el programa Scribus Scribus software
    Petr Vanek el programa Scribus Scribus software
    Riku Leino el programa Scribus Scribus software
    Craig Ringer el programa Scribus Scribus software
    Andreas Vox el programa Scribus Scribus software
    Jean Ghali el programa Scribus Scribus software
    Ekkehard Will el proyecto Scribus Generator Scribus Generator project
    superpiwi el blog Ubuntu Life Ubuntu Life blog
    Joaquín Herrera Goás el sitio web Joaclint Istgud Joaclint Istgud web site
    Alexandre Prokoudine el sitio web Libre Graphics World Libre Garphics World web site
    Jesús David Navarro la Bitácora de jEsuSdA jEsuSdA’s blog
    heathenx los videotutoriales de screencasters.heathenx.org screencasters.heathenx.org videotutorials
    Richard Querin los videotutoriales de screencasters.heathenx.org screencasters.heathenx.org videotutorials
    Guillermo Espertino (Gez) el blog OHWeb OHWeb blog
    Ariel Corgatelli la revista TuxInfo TuxInfo magazine
    Jorge Cacho Hernández la revista TuxInfo TuxInfo magazine
    Ronnie Tucker la revista Full Circle Full Circle magazine
    Diego Samuel el sitio web Cuaderno de Novato en Debian Cuaderno de Novato en Debian web site
    Fernando da Rosa el blog Fernando da Rosa Morena Fernando da Rosa Morena’s blog
    ginger coons la revista Libre Graphics Libre Graphics Magazine
    Ana Carvalho la revista Libre Graphics Libre Graphics Magazine
    Ricardo Lafuente la revista Libre Graphics Libre Graphics Magazine
    Markus el sitio web graphics@linux graphics@linux web site
    novatillasku el sitio web novatillasku.com novatillasku.com web site
  3. Al archivo lo guardé en formato CSV.

Ahora sí, le toca el turno a Scribus

  1. Llegado este punto, estamos en la parte central de esta entrada. Hay que abrir Scribus y crear un documento de tamaño A4 apaisado.
    Luego, ir a Archivo / Importar / Get vector file… y buscar y seleccionar el archivo creado con Inkscape en el paso 1.
    A continuación redimensionarlo y centrarlo en la página:
  1. Luego, se ingresan los textos «fijos». En este caso utilicé la fuente PT Sans.
    El texto podría ser:
    entrega el presente diploma a…
    por su contribución a la Comunidad del Software Libre con…
    Dado que el diploma sería bilingüe, también va el mismo texto, en inglés:
    awards this diploma to…
    for contribution to the Free Software Community with…

  1. Para ingresar los campos variables (en este caso el nombre y el motivo del «reconocimiento») se debe escribir el título de cada una de las columnas de archivo CSV, creado en el paso 2 de este tutorial («nombre», «motivo» y «motivo-ing»), entre «%VAR_» y «%«.
    Se debe escribir en el tipo de letra, con el color y el tamaño que se quiera que tenga el resultado final (en el ejemplo utilicé la fuente Lobster 1.4 para el nombre). El archivo de Scribus listo para correr el script, se vería así:

  1. Con el archivo CVS con los datos (creado en el paso 2) y el diploma listo para recibirlos, sólo queda descargar el script y descomprimirlo. Para ejecutarlo, desde el archivo de Scribus, hay que ir a Script / Ejecutar script…
    Y en la ventana que se abre, buscar y seleccionar el script recién descomprimido (ScribusGenerator.py).
    Se abre la ventana del Scribus Generator y en ella hay que indicar el camino hacia el archivo de datos (CVS), hacia el propio achivo de Scribus y un directorio donde se guardarán los PDFs resultantes.

  1. Al pinchar el botón Generate, el script crea tantos PDFs como filas de datos haya en el archivo CVS (en este ejemplo, 28). Cada PDF queda de una página con el diploma de correspondiente a una de las personas listadas en el archivo CVS.

Para terminar, se unen todos los PDFs en un archivo único

  1. Este último paso es por comodidad y prolijidad, y consiste en unir todos los PDFs en un PDF único. Para ello debemos instalar pdftk y pdfchain. (*) Luego de tener estos dos programas instalados, hay que abrir el pdfchain, y añadir los PDFs a unir:

  1. Al pinchar en Guardar, pide un nombre para el nuevo PDF y lo genera.
    Una limitación del programa es que soporta hasta 26 archivos simultáneos, así que la unión de todos los diplomas (eran 28) tuve que hacerla en dos etapas.

Al terminar todo el proceso, obtuve un archivo PDF de 28 páginas y algo más de 17 Mb de peso, que quien quiera puede descargar de mi cuenta de UbuntuOne Copy.com.
¡En una de esas, alguno de los «homenajeados» pasa por aquí y se imprime su propio diploma!

(*) ACTUALIZACIÓN: Para esta última parte del tutorial, pdf shuffler parece ser una mejor opción, ya que no tiene la limitación de cantidad de archivos (o si la tiene, es mucho más alta que los 26 que soporta pdfchain).

[ ACTUALIZACIÓN del 29 de julio de 2015 ]
El usuario berteh2be publicó un video (en inglés) explicando el uso de este Script, pero agregando el uso de más variables, de forma de modificar los colores, posiciones, imágenes, tipografías, etc. Realmente muy interesante, aquí lo tienen:

7 respuestas

Responder a Unknown Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicar un comentario