Rellenar un formulario PDF desde Visual Foxpro

Posted on marzo 13, 2016

1



Una de las librerías más interesantes para manipular un PDF es ActivePDF Toolkit. No es una librería barata, pero tiene un gran potencial y es muy versátil.

Es posible bajar una versión de la librería de demostración desde http://www.activepdf.com/myaccount/downloads

El siguiente ejemplo muestra como:

  • Añadir una imagen en la primera página.
  • Rellenar un formulario (2 campos).
  • Añadir un pie de página estático a partir de la segunda página.
  • Generar un PDF que está limitado con contraseña, para que no pueda modificarse (añadir comentarios, copiar el contenido, etc.). Sólo permite imprimirlo.
* Ejemplo relleno PDF con ActivePDF Toolkit
* http://www.activepdf.com/products/toolkit

lcPDFOrigen = "C:\activepdf\origenpdf.pdf"
lcImagenIncrustar= "c:\activepdf\imagenincrustar.jpg"
lcPDFFinal = "resultadoPdf.pdf"

* Variables con el valor a poner en formulario
lcNombre = "David"
lcApellidos = "Acuña"

* Variable con el texto a poner en las cabeceras de la página 2 en adelante.
lcPiePagina = "Este texto se muestra en pie de página a partir de la 2ª hoja"


* Crear objeto Activepdf Toolkit
Local loAPTToolkit As APToolkit.Object
loAPTToolkit = Createobject ("APToolkit.Object")

* activar una contraseña
loAPTToolkit.SetOutputSecurity128("","contrasenya",1,0,0,0,0,0,0,1)

lnResLib = loAPTToolkit.OpenOutputFile("MEMORY") && aqui podría ir un nobre de archivo en lugar de generar el archivo en memoria.
If lnResLib=-1 Then
 Messagebox("No se ha creado el archivo en la memoria")
Else
 lnResLib = loAPTToolkit.OpenInputFile(lcPDFOrigen)
 If lnResLib=-1 Then
 Messagebox("No existe el documento original. (" + lcPDFOrigen + ")")
 Else
 * Añadir una imagen, configurar los parámetros
 lnx = 200 && 72 = 1 inch, 0 ,0 is bottom left of page
 lnY = 450 && 72 = 1 inch, 0 ,0 is bottom left of page
 lnWidth = 200 && 0 for no change
 lnHeight =200 && 0 for no change
 If Len(Trim(lcImagenIncrustar))<>0 Then
 * Stamp image on the page
 loAPTToolkit.SetHeaderJPEG(lcImagenIncrustar, lnx, lnY, lnWidth, lnHeight, .T.)
 Endif

 * Rellenar el formulario
 lcField = "nombre"
 lctexto = lcNombre
 loAPTToolkit.SetFormFieldData(lcField, lctexto, 1)

 lcField = "apellidos"
 lctexto = lcApellidos
 loAPTToolkit.SetFormFieldData(lcField, lctexto, 1)

 lnResLib = loAPTToolkit.copyform(1, 1) && la primera pagina es diferente a las siguientes.
 * Limpiar la cabecera, para que no aparezca/arrastre en las siguientes páginas
 loAPTToolkit.ClearHeaderInfo

 * A partir de la segunda pagina, ponemos un pie de pagina a todas las hojas.

 * Fuente y tamaño
 lcstrFont = "Arial"
 lcstrFontSizeText = "10"

 * Poner el pie de página
 loAPTToolkit.SetHeaderTextColor(0, 100, 155, 0)
 loAPTToolkit.SetHeaderFont(lcstrFont, lcstrFontSizeText)
 loAPTToolkit.SetHeaderText(150, 50, lcPiePagina)

 * Desde 1a pagina 2 a la ultima. el segundo parametro indica de pagina X a la Y. Si Y= 0 es hasta el final.
 lnResLib = loAPTToolkit.copyform(2, 0)

 If lnResLib=1
 * Cerrar el archivo original
 lnResLib = loAPTToolkit.CloseInputFile()

 * Cerramos el archivo destino
 loAPTToolkit.CloseOutputFile()

 * Podrimamos devolver en una web esta variable de memoria como cadena PDF
 lcCadena = loAPTToolkit.BinaryImage()

 * en el ejemplo, lo que hago con STRToFile es convertir de variable a un archivo llamado resultadoPdf.pdf
 Strtofile(lcCadena,lcPDFFinal)
 Messagebox("Se ha generado "+lcPDFFinal)
 Endif
 Endif
Endif
Release loAPTToolkit

 

Posted in: Foxpro