PHPWord: agregar marca de agua, TOC y gráficas a documento de Word con PHP

En este post vamos a ver cómo trabajar con documentos de Word usando el lenguaje de programación PHP y la librería PHPWord, parte de la familia de PHPOffice.

Lo que veremos será cómo:

  1. Agregar marca de agua a un documento
  2. Agregar un índice o tabla de contenido
  3. Trabajar con gráficas de barras, de pastel, de línea, etcétera

Este tutorial es la tercera parte de una serie de tutoriales sobre documentos de Word y PHP.

Recuerda ver la primera parte para ver cómo instalar la librería y su uso básico, así como la segunda parte para trabajar con listas, tablas e imágenes.

(más…)

Crear documentos de Word con PHP y PHPWord

Anteriormente en mi blog he escrito cómo crear y leer hojas de cálculo o documentos de Excel con PHP.

Hoy vamos a ver cómo crear documentos de Word (con extensión docx) en PHP, usando la librería PHPWord.

La librería de phpword permite varias cosas, y para comenzar veremos cómo:

  • Instalar la librería phpword usando composer (no hay pretexto para no usarlo en la actualidad)
  • Crear primer documento de Word, con propiedades, etiquetas, título, etcétera.
  • Agregar texto con distintas fuentes a documento de Word
  • Agregar títulos y alinear texto
  • Poner hipervínculos dentro de un documento de Word
  • Agregar saltos de línea y saltos de página
  • Guardar el documento de Word
  • Descargar el documento de Word

La librería permite más cosas, pero las veremos más tarde.

(más…)

Android y SQLite - Couldnt read row 0 col -1

Android: solución a Couldn’t read row 0, col -1 from CursorWindow

Programando algunas cosas en Android con SQLite me topé con un error que dice algo así (puede variar según tu caso):

java.lang.IllegalStateException: Couldn’t read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

Esto fue al usar el método getColumnIndex y los métodos de getXXX de la clase Cursor.

Hoy voy a explicar cómo solucionar ese error y cuáles son sus causas en Android, no importa si es en Java o en Kotlin, pues Cursor es de Java.

(más…)