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:
- Hacer el diseño básico del diploma o certificado en Inkscape.
- Guardar en un archivo de Calc (u otra hoja de cálculo) la información variable para la personalización.
- 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.
- Unir todos los PDFs en uno solo con, por ejemplo, PDFChain.
Hacer el diseño básico con Inkscape
- 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).
- 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):
- 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
- 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).
- 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 |
- Al archivo lo guardé en formato CSV.

Ahora sí, le toca el turno a Scribus
- 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:
- 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...
- 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í:

- 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.
- 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
- 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:
- 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.
¡En una de esas, alguno de los "homenajeados" pasa por aquí y se imprime su propio diploma!