He empezado a utilizar A-PDF Text Replace que
es una herramienta muy útil para modificar documentos en formato PDF.
Por ejemplo, sirve para personalizar un mismo documento PDF para diferentes personas.
Para ello se puede poner en el documento PDF original
un texto que haga de campo a reemplazar, por ejemplo, _NOMBRE_, y
luego utilizar A-PDF Text Replace para cambiar _NOMBRE_ por
el nombre de cada persona.
Como con A-PDF Text Replace se pueden dar varias órdenes de cambio en la misma ejecución,
se puede personalizar simultáneamente el nombre, la fecha, la dirección u otros campos.
A-PDF Text Replace es también invocable desde la línea de mandatos,
por lo que puede invocarse con System()
desde el lenguaje TOL,
como se muestra en el siguiente código:
///////////////////////////////////////////////////////////////////
Real PdfReplace(Text inpPth, // Input file path
Text outPth, // Output file path
Text namCus) // Customer name
///////////////////////////////////////////////////////////////////
{
Text pdfCmd = W("bin/apdf/ptrcmd.exe"); // A-Pdf executable path
Text inpDos = Q(W(inpPth));
Text outDos = Q(W(outPth));
Text forOld = Q(":e:");
Text namOld = Q(":a:");
Text dteOld = Q(":c:");
Text forNew = Q("Edición personalizada para");
Text namNew = Q(namCus);
Text dteNew = Q("el "+Dte2Spa(Now)+"."); // Spanish date
Text cmdTxt = pdfCmd+" "+inpDos+" "+outDos+" "+
forOld+" "+forNew+" "+
namOld+" "+namNew+" "+
dteOld+" "+dteNew;
Real sysRet = System(cmdTxt); // Execute
sysRet // Returns
};
Donde Q()
y W()
son dos pequeñas funciones donde
la primera pone comillas en los caminos de los ficheros,
por si esos nombres contuvieran caracteres blancos, y
la segunda cambia el slash normal ( / ) por el back slash de los caminos de Windows ( \ ).
///////////////////////////////////////////////////////////////////
Text Q(Text txt) // Text
///////////////////////////////////////////////////////////////////
{ Char(34)+txt+Char(34) };
///////////////////////////////////////////////////////////////////
Text W(Text txt) // Text
///////////////////////////////////////////////////////////////////
{ Replace(txt, "/", "\\") };
La siguiente ventana muestra
la ejecución de A-PDF Text Replace invocado desde TOL.
El mandato que se esta ejecutando en la ventana es:
bin\apdf\ptrcmd.exe
"..\Ediciones\9788493912901.Becquer.Gustavo. Adolfo.Leyendas\
BecquerGA.Leyendas.20110802.aContracorriente.PackDigital\BecquerGA.
Leyendas.20110801.aContracorriente.pdf"
"aContracorriente\BecquerGA.Leyendas.20110801.aContracorriente.pdf"
":e:" "Edición personalizada para"
":a:" "Antonio Salmeron"
":c:" "el 9 de septiembre de 2011."
Donde ":e:", ":a:" y ":c:" son los campos que se utilizan para
ser remplazados por los texto de personalización.
El resultado es el que se muestra en la siguiente imagen.
A la izquierda el PDF original,
a la derecha el PDF modificado.
Es la personalización de una edición digital de las Leyendas de Gustavo Adolfo Bécquer.
Los campos seleccionados en el primer PDF corresponden a las marcas,
los campos seleccionados en el segundo PDF a los valores finales de la personalización.