Editar formularios PDF con PHP (I)

A veces nos encontramos con con documentos PDF que contienen campos de formulario que deben ser cumplimentados por un usuario. Esto, por ejemplo, es muy habitual en documentos de las Administraciones públicas, aunque muchas corporaciones privadas también los emplean. En ocasiones debemos incluir estos formularios en nuestro sitio con algunos de esos campos precumplimentados, con valores estándar, para facilitarles la tarea a los usuarios. Aunque pueda parecer que un documento PDF es un formato cerrado, que es como te lo dan, y es poco lo que se puede hacer con él, con los recursos adecuados es fácil “trabajarlo” del modo que necesitemos.

Editar formularios PDF con PHP (II)

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.

Editar formularios PDF con PHP (y III)

Ahora sí. Ya tenemos el conocimiento básico acerca de qué queremos hacer, qué herramientas vamos a usar, y cómo está constituido, internamente, un formulario PDF con campos editables. Ha llegado el momento de poner los dedos sobre el teclado, y empezar a programar. En este artículo vamos a ver como actúa todo el proceso PHP necesario.

Emplear use() en funciones anónimas

En algunos casos vemos, sobre todo en códigos PHP recientes, que la declaración “anónima” de una función se acompaña del empleo de use() para pasarle variables a la función. Un ejemplo sería el siguiente: $miFuncion = function() use ($nombre) {     echo “Hola, “.$nombre; } Esta sintaxis puede resultar un poco confuso si no estás familiarizado con él. Y, si te estás iniciando en el mundillo de los frameworks PHP lo vas a ver muy a menudo. Vamos a ver que es lo que hace, y cómo hay que usarla. En realidad, esto sería equivalente a lo siguiente: $miFuncion = function($nombre) {     echo “Hola, “.$nombre; } O, también a lo que aparece a continuación: $miFuncion = function() {     global $nombre;     echo “Hola, “.$nombre; } Lo único con lo que hay que tener cuidado es que, cuando emplees la primera sintaxis (la que recurre a use()) la variable o variables que emplees deberán estar declaradas, y asignadas, ANTES DE DECLARAR LA FUNCIÓN. Con las otras dos sintaxis (las de siempre, para entendernos), basta con que las variables empleadas estén declaradas antes de invocar la función. Por lo tanto, podemos decir que la sintaxis con use() …

Seguir leyendo

Espacios de nombres en PHP (I). Introducción.

Todos hemos oído hablar alguna vez de los espacios de nombres, o namespaces (ns), en terminología anglosajona. Tal vez en otro contexto (cómo XML, por ejemplo). En PHP constituyen una valiosa herramienta de la que vamos a ocuparnos en estos artículos. En su definición más aceptada, son una forma de encapsular elementos (en el contexto de PHP, estamos hablando de constantes, funciones y clases). Esto nos facilita crear código reutilizable, permitiendo a otros desarrolladores implementar con facilidad nuestras librerías, evitando colisiones de nombres que pudieran surgir con sus propios elementos, y viceversa. Nosotros podemos implementar librerías de terceros, con la misma prerrogativa.

Espacios de nombres en PHP (II). Agrupando Namespaces.

En el artículo anterior nos introdujimos en el uso de los espacios de nombres, o namepaces (en muchos textos aparecen, abreviadamente, como ns). En este artículo vamos a ver como usar dos espacios de nombres diferentes en un mismo script. Antes de entrar en materia debo advertirte que lo que vamos a aprender en este artículo es una práctica que, aún siendo sintácticamente legal en PHP, se encuentra sumamente desaconsejada, en orden a tener un código limpio y reutilizable. En realidad, no existe ninguna razón clara para usar lo que vamos a ver aquí, y sí hay muchas para no usarlo. La más obvia es que nuestro código será más limpio y reutilizable cuanto más encapsulado esté. En efecto, si yo necesito emplear los elementos que se encuentran bajo un determinado espacio de nombres, no hay ninguna razón por la que deba cargar un script que incluya otros espacios de nombres cuyos elementos no voy a necesitar. A menudo, la diferencia entre encapsulación y sobrefragmentación del código es una línea muy delgada, pero el criterio que acabo de exponerte la define bastante bien. Y ahora, si las prácticas que vamos a ver están desaconsejadas ¿por qué hablar de ellas? Con …

Seguir leyendo

Espacios de nombres en PHP (y III). Jerarquía de namespaces.

En el primer artículo de esta serie explicábamos que los espacios de nombres son una forma de clasificar elementos equivalente, en cuanto al concepto, a lo que son los directorios para los ficheros. De este modo podemos tener elementos, como ya hemos aprendido, con el mismo nombre, en diferentes espacios de nombres. A la hora de referenciar un elemento, lo hacemos precediéndole, en su caso, del espacio de nombres al que dicho elemento pertenece. Al igual que ocurre con los directorios, podemos especificar una ruta de acceso de tres modos: Sin especificar un espacio de nombres. En ese caso se entiende que el elemento referenciado se encuentra en el espacio de nombres actual. Es lo mismo que no usar espacio de nombres. Esto se conoce como nombre sin cualificar. Es el equivalente, cunado hablamos de ficheros y directorios a llamar a un fichero sólo por su nombre, asumiendo que está en el mismo directorio en el que estamos trabajando. Especificando un espacio de nombres, la barra invertida, y el elemento al que queremos referirnos. Esto se conoce como nombre cualificado. El espacio de nombres que usamos “depende” del espacio de nombres actual. Es el equivalente a usar una ruta relativa …

Seguir leyendo

El servidor de correo electrónico

Cuando vamos a escribir código PHP (o, en general, con cualquier tecnología de servidor), necesitamos disponer de un servidor de correo electrónico, para probar aquellos scripts que vayan a enviar correos a los usuarios. Tenemos dos alternativas. Si tenemos un alojamiento contratado con algún proveedor de servicios, estos ya incluyen tal prestación, con lo que lo único que tenemos que hacer es crear en el servidor remoto un directorio para pruebas y, dentro de este, subir los scripts que envíen correos electrónicos. Para mi, esta es la mejor opción, ya que nos permite probar los scripts en un entorno de producción real.

Almacenar imágenes en base de datos con PHP

Almacenar imágenes en el servidor de producción con PHP es muy sencillo. Basta subir un fichero y, tras unas comprobaciones rutinarias, almacenarlo en el directorio deseado con move_uploaded_file(). Si nunca has usado esta técnica, puedes revisar este post. En este artículo veremos cómo almacenar una imagen en forma de datos binarios en una tabla de una base de datos de MySQL.

Manejo de fechas en PHP

Abrimos esta serie de artículos de “Trucos y Recursos para PHP” con un tema delicado de gestionar, no sólo en este lenguaje en particular, sino en cualquier otro. De hecho, PHP es uno de los lenguajes en el que las fechas son más manejables, ya que implementa funcionalidades muy específicas y bien concebidas. Los datos de tipo fecha, y las operaciones que se pueden necesitar sobre ellos son, sin duda, una pequeña “bete noire” para muchos programadores. Desde aquí voy a transmitiros mi experiencia con estos datos, en el deseo de que os ahorre algún dolorcillo de cocorota.