Editar formularios PDF con PHP (II)

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

En el artículo anterior preparamos el escenario para poder editar, por programación, el contenido de campos de formulario en archivos PDF.

En este artículo vamos a ver, ahora que ya tenemos preparado lo básico, conceptos fundamentales de la edición de campos en formularios PDF. Explicaremos cómo funciona la utilidad PDFTK para esta finalidad. En el próximo artículo veremos el funcionamiento del ejemplo práctico que vamos a usar, que podrás descargar para experimentar, y veremos como está estructurado, y como lleva a cabo el proceso deseado, hasta obtener el resultado buscado.

LA ESTRUCTURA DEL EJEMPLO

El ejemplo que hemos preparado para ver el funcionamiento de este proceso es un script principal (index.php) y una estructura formada por los siguientes directorios:

  • /origen/. En este directorio está el formulario PDF con los campos que deseamos editar.
  • /temp/. En este directorio se almacenará, de forma temporal, un archivo especial, con extensión .fdf. En este artículo comentaremos que es este tipo de archivo.
  • /dest/. En este directorio se almacenará el formulario PDF con los campos que deseemos cumplimentados, listo para hacer con él lo que proceda (grabarlo en alguna parte del disco, enviarlo al cliente, etc).
  • /includes/. En este directorio se almacenará la clase de PHP que hace todo el trabajo pesado a las órdenes de index.php.

EL FORMULARIO PDF

El formulario PDF contiene los campos de los que deberemos poder editar algunos, o todos, según nos indique el cliente. Para este ejemplo hemos creado un formulario de aspecto muy simplón, pero completamente funcional (que es lo que nos interesa ahora). Lo hemos hecho con la herramienta online https://www.pdfescape.com, de la que ya hablamos en el artículo anterior. Su aspecto es el siguiente:

Como ves no es que sea muy elegante, pero este artículo no va de artes plásticas. Tiene varios tipos de campos, sin ningún contenido previo, para poder experimentar. Eso es lo que nos interesa.

EL FORMATO .fdf

El formulario anterior está en /origen/formulario.pdf. Cuando tenemos un formulario en PDF, con una serie de campos, podemos convertirlo, con la ayuda de PDFTK, a un fichero .fdf. El formato FDF es un archivo de texto plano, con algunos caracteres que se usan como marcas para relacionarlo con el PDF del que procede, que contiene los nombres de los campos del formulario, y los valores por defecto. El FDF obtenido a partir del PDF que tenemos es el siguiente:

Las marcas propias del PDF no nos interesan aquí. Las dejaremos como están, pero no vamos a reparar en ellas. Lo que nos interesa es lo que hay entre /Fields [ y <<]. En esa parte se definen los campos que hay en el formulario y se muestran los valores que tienen por defecto.

Como puedes ver de un modo bastante intuitivo, cada campo está delimitado por << y >>. En cada campo tenemos dos líneas que nos interesan. La primera está precedida por /V, y contiene el valor actual del campo. La segunda esta precedida por /T y contiene, entre paréntesis, el nombre del campo. El nombre del campo lo hemos decidido nosotros cuando creamos el formulario, bien sea con la utilidad online de la que hemos hablado, o del modo que sea que lo hayamos hecho. También hemos decidido los posibles valores. Si el formulario nos lo proporciona un tercero, debe darnos esta información.

Los campos pueden ser de varios tipos. Dependiendo del tipo, su valor se representará, en el FDF, de un modo u otro. En la mayoría de los casos, el valor se acota entre paréntesis. Por ejemplo, para el campo marcado como /T (campo_ciudad) el valor es /V (). Al no haber nada entre los paréntesis, eso nos indica que el campo está, originalmente, vacío. Esto funciona así para los campos de texto de una línea, de texto multilínea y selectores desplegables.

En el caso de las casillas de verificación o los grupos de botones de radio el valor va precedido por un slash (/). Si en un grupo de botones de radio hay alguno seleccionado, su valor aparecerá aquí. Por ejemplo, en el campo cuyo nombre es /T (campo_edad) el valor es /V /1, lo que indica que, por defecto, está seleccionada la primera opción. En cambio, en el campo con el nombre /T (campo_comunitario), que es una casilla de verificación, el valor es /V /, lo que indica que está desmarcada. En sistemas operativos Linux una casilla desmarcada tiene el valor /V /Off. Si la casilla estuviera marcada, tendría el valor que le hayamos dado al diseñar el formulario. Es como las casillas de verificación de los formularios HTML. Tienen un atributo value que indica cual es su valor cuando están activadas. Este valor lo hemos establecido nosotros al crear el formulario, o bien nos lo dan, si el formulario ha sido creado por un tercero. En el formulario de este ejemplo, el valor de marcada será comunitario. Por lo tanto, si la casilla estuviera marcada en el momento de generar el FDF, el valor de /T (campo_comunitario) sería /V /comunitario.

CONCLUYENDO, POR AHORA

Lo bueno que tiene el disponer de un archivo FDF es que es una representación, en texto plano, de los campos de formulario del PDF. Como es texto plano, podemos editarlo según nuestras necesidades. Por supuesto, editar el FDF no modifica el PDF original. Lo que tenemos que hacer es crear una copia del PDF, inyectándole el FDF modificado, con lo que habremos creado un PDF modificado.

Ambas operaciones importantes (crear el FDF e inyectarlo en una copia del PDF) se llevan a cabo con la ayuda de PDFTK. Modificar el FDF según nuestros deseos, como es texto plano, se hace con PHP puro.

En el próximo artículo veremos como trabaja todo esto en un ejemplo como hemos indicado al principio, que pondré a tu disposición para descargar.



     

No se admiten más comentarios