Rellenar un formulario PDF a partir de una consulta en MS-Access

Se trata de rellenar un formulario PDF desde Access. Para ello usaremos la herramienta libre PDFtk. En Access crearemos un nuevo módulo y una clase VBA

1) El formulario PDF

Podemos crear un formulario en un documento PDF. Para ello hay que agregar los campos dibujándolos sobre el PDF y ajustando sus propiedades

1.1) Cómo crear el formulario con PDFescape.com

Es un editor PDF gratuito en Internet. Lo usaremos para crear los campos del formulario en el PDF

Añadir el primer campo de texto en el PDF:

Añadir el primer campo de checkbox en el PDF:

Los campos aparecen en verde si están desbloqueados y en azul si están bloqueados:

Cambiar el tamaño de la fuente a 16 puntos:

1.2) Documentos PDF

2) La herramienta pdftk

Descarga PDFtk Free

Incluye la herramienta en línea de comandos PDFtk Server. Lo usaremos para rellenar los campos del formulario PDF. Al acabar de bajar e instalar este programa dispondremos de la orden pdftk que se usa desde el terminal.

Apuntes de pdftk

3) La base de datos MS-Access

3.1) Código VBA

En la ventana de código Visual Basic (ALT F11) importa los siguientes módulos:

  • apiShell.bas — Ejecución de un programa en el terminal esperando a que acabe
  • classFDF — Clase para rellenar y guardar un fichero FDF (Form Data Fields)

4) Ejemplos

4.1) Rellenar el formulario PDF

Dim raiz As String
Dim inPDF As String
Dim inFDF As String
Dim outPDF As String
Dim fdf As classFDF
Dim cmd As String

'Directorio de la BD
raiz = CurrentProject.path & "\"

'Documento PDF con el formulario
inPDF = raiz & "pdf\Formulario.pdf"

'Archivo que contendrá los datos para el formulario
inFDF = raiz & "pdf\Datos.fdf"

'Documento PDF que tendrá el formulario relleno con los datos
outPDF = raiz & "pdf\Resultado.pdf"

'Instanciar la clase FDF
Set fdf = New classFDF

'Añadir datos de tipo texto
fdf.AddText "campo1", "Dato1"
fdf.AddText "campo2", "Dato2"
fdf.AddText "campo3", "Dato3"

'Marcar casillas de verificación
fdf.AddCheck "campo4", True
fdf.AddCheck "campo5", False
fdf.AddCheck "campo6", True

'Guardar el archivo con los datos
fdf.Save inFDF

'Rellenar el formulario
cmd = "pdftk " & inPDF & " fill_form " & inFDF & " output " & outPDF
Call WaitShell(cmd, vbHide)

'Abrir el documento PDF resultante
Call ShellExec(outPDF)

4.2) Descarga el ejemplo básico

Descarga RellenarFormPDF_min.7z que incluye la base de datos y el formulario PDF

4.3) Descarga el ejemplo completo

Descarga RellenarFormPDF_full.7z que incluye la base de datos y el formulario PDF

  • Formulario para exportar un cliente en un formulario PDF:
  • Código del formulario:
    Private Sub ComandoFormPDF_Click()
        If Not IsNull(Me.cliente_id) Then
            Call rellenarFormClientePDF(Me.cliente_id)
        End If
    End Sub
  • En el módulo appFormPDF.bas está definida la función rellenarFormClientePDF

Comentarios

Proinf.net, ©2003-2017 ci 3.1.6 (CC) Esta obra está bajo una licencia de Creative Commons Este software está sujeto a la CC-GNU GPL