Rellenar un formulario en Word y gardarlo como PDF desde Visual Foxpro 9


Este ejemplo es válido para generar contratos u otros informes que nos interesa rellenar desde una plantilla de Microsoft Word existente, con los datos de nuestra aplicación, sin que tengamos que recurrir a combinar correspondencia.

El ejemplo rellena 3 variables de un documento plantilla de Word con campos desde VFP.

Paso 1. Crear el documento en word, que grabaremos con extensión .DOTX

El documento de ejemplo tiene una línea con datos varios de la persona:

Sr. {DOCVARIABLE “Nombre”}, de {DOCVARIABLE “Localidad”}, que vive en la calle {DOCVARIABLE “Direccion”}. ¡Gracias por comprar!

Los datos se guardan en campos de Word. Para añadir un campo de Word, hay que pulsar CTRL+F9. Se abrirán unos corchetes que tendremos que rellenar con las variables de documento que nos interese. Se pueden repetir en varios sitios diferentes del documento. Por ejemplo, es normal repetir el nombre de la persona varias veces en un contrato.

En lugar de usar CTRL+F9, también se puede usar en el ribbon la opción INSERTAR, del grupo TEXTO elegir ELEMTENTOS RAPIDOS y la opción que pone CAMPOS.

Una vez tengamos el documento generado, vamos a guardar como, elegimos Plantilla de Word y ponemos el nombre de la plantilla, por ejemplo PLANTIVFP.DOTX

Paso 2. Rellenar los campos desde VFP y generar el PDF.

* Generar el contrato e viaje.

LOCAL oWord as Word.Application
oWord = CREATEOBJECT(“Word.Application”)
oWord.Visible = .f. && Toggle this to True to see if there’s
&& any difference
oDoc = oWord.Documents.Add(“c:\ejemplo\PLANTIVFP.DOTX”)

* Asignas valores a los campos *
oDoc.Variables.Add(‘Nombre’, ‘David Acuña’)
oDoc.Variables.Add(‘Direccion’, ‘Plaza Mercadal, s/n’)
oDoc.Variables.Add(‘Localidad’, ‘Balaguer’)

oWord.ActiveWindow.View.ShowFieldCodes = .f.
oDoc.Fields.Update

oWord.Visible = .T. && Inspect the results

MESSAGEBOX(“Mira el word que hay abierto, y podrás ver como queda.”)

oDoc.SaveAs2(“c:\ejemplo\RESULTADO.PDF”, 17) && Guardar como PDF el documento generado.
oWord.Quit(.F.) && Salir sin guardar cambios.

RELEASE oWord

 

Anuncios

7 comentarios en “Rellenar un formulario en Word y gardarlo como PDF desde Visual Foxpro 9

  1. Que interesante, una herramienta para la corresponsalía, que me permite adicionar otros elementos como auditoria para el seguimiento. Hoy lo pruebo. Gracias

  2. Hola, está muy bueno el ejemplo, pero estoy haciendo un programa de historias clinicas, y me gustaria que el medico pueda escribir en word lo nuevo y agregarlo al final de un archivo PDF. para que no se pueda modificar lo escrito anteriormente.

  3. Saludos, este cogido funciona de maravilla con vfp9 + Win10 64bits + MS Office2016/2013. Aunque a mi se me presenta el problema con el PDF, pues se crea con un FONT muy diferente al clásico ARIAL que tiene la plantilla.

    • Saludos, yo mismo me pregunto y yo mismo me respondo… lo que sucede con el PDF que me salía con un font diferente al de la plantilla era por que de las 4 impresoras que tengo en mi PC… estaba como predeterminada una pequeña matricial LX300 de epson. al cambiarla con otra… todo se arregló !!! SALudos

      • Genial! Creo recordar que en el driver de la impresora se le podía decir que generase las letras como imágenes. Eso permitía imprimir caracteres que de otra forma no se podía hacer en impresoras matriciales. El precio a pagar era la velocidad de impresión, que disminuía. También se notaba una peor calidad de impresión, según el modelo de impresora, especialmente en las de 24 agujas.

  4. Hola david a mi presenta no me presenta el valor de la variable. solo el nombre de ella. y otra cosa use un documento tipo doc no se si importara.

    saludos

    • Hola Daniel,
      Creo que el problema de que no veas el valor de la variable es que te falta:
      oWord.ActiveWindow.View.ShowFieldCodes = .f.
      Otra cosa podría ser que no estés poniendo bien los campos con CTRL+F9

      Que sea un .DOC creo que no debería afectar. Para estas cosas el concepto de plantilla es mejor que el de documento, ya que se entiende que generas un documento nuevo rellenado para una persona específica, usando una plantilla existente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s