¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Python 3
  3. Generación de contenido
Extrait - Python 3 Tratamiento de los datos y técnicas de programación
Extractos del libro
Python 3 Tratamiento de los datos y técnicas de programación
1 opinión
Volver a la página de compra del libro

Generación de contenido

PDF

1. Presentación

a. Formato PDF

PDF son las siglas de Portable Document Format, un formato de documento que utiliza un lenguaje de descripción de página que es el PDL (siglas de Page Document Language) y un protocolo de impresión independiente del fabricante, que es una evolución de Postscript. Se ha convertido, progresivamente, en el estándar de impresión de documentos y en una norma ISO.

A día de hoy existen muchos formatos de datos (texto, dibujos, imágenes...) que incluyen funcionalidades para su exportación a PDF.

b. Ventajas

Sus principales ventajas son:

  1. concordancia entre la representación en pantalla y lo que realmente se imprimirá; 

  2. independencia respecto al sistema operativo;

  3. independencia respecto al hardware;

  4. existen aplicaciones y librerías libres para este formato;

  5. la gran difusión de lectores de documentos PDF, la mayoría de ellos libres y gratuitos. 

c. Inconvenientes

Los principales inconvenientes son de varios tipos:

  1. Los permisos vinculados a cada documento dependen, a la vez, de los propios del formato, además de aquellos ligados a todo lo que está contenido en un documento, es decir, permisos de los autores sobre los textos, las imágenes incrustadas, o incluso los tipos de letras utilizados.

  2. La evolución del formato está vinculada, principalmente, a la política de un único fabricante.

d. Presentación de la librería libre

ReportLab es una librería externa escrita en Python que ofrece herramientas sencillas y con buen rendimiento para generar documentos PDF. Esta librería la mantiene un fabricante que proporciona dos ramas, una de ellas destinada a la comunidad, que es la que nos interesa utilizar.

Está migrada a Python 3, en particular a partir de Python 3.3, y el código puede encontrarse en: https://github.com/nakagami/reportlab

2. Bajo nivel

a. Librería de datos

Lo primero que hay que tener en cuenta para crear un documento es disponer de los datos prefabricados. En efecto, es conveniente disponer de los formatos listos correspondientes a un A4, A3 o cualquier otro formato habitual, con colores predefinidos listos para ser empleados, y un sistema que permita convertir las medidas que manejamos en aquellas utilizadas por ReportLab, a saber un point, la unidad de medida de las pantallas y de las impresoras....

OpenDocument

1. Presentación

Seamos claros desde el principio. OpenDocument es un formato de documento, compartido por todos los programas ofimáticos dignos de este nombre. Este formato se ha elaborado minuciosamente y ha sido negociado por los fabricantes que han formado parte de este proceso. OpenDocument es, por tanto, un formato que se ha consensuado y se ha compartido entre todos los programas ofimáticos. No hablamos en esta sección de LibreOffice (la suite ofimática de referencia), sino más bien de un formato de documento universal.

A este nivel, el formato es bastante sencillo de comprender. Se trata, en particular, de un simple archivo comprimido en formato ZIP que contiene grandes archivos XML entre los que se encuentra content.xml, que incluye todo el contenido del documento y el formato utilizado (incluido el estilo). Otro archivo, style.xml, detalla cada uno de los estilos personalizados del documento.

Podemos acceder al contenido de un archivo OpenDocument simplemente descomprimiéndolo y utilizando XPath para recorrerlo.

Vamos a presentar aquí los métodos de alto nivel para generar documentos de tipo OpenDocument, y para ello, la referencia es este sitio: http://www.opendocumentformat.org/developers/

2. ezodf2

a. Instalación

La librería ideal para generar un documento con formato OpenDocument es ezodf2 (https://pypi.python.org/pypi/ezodf2). Se instala de la siguiente manera: 

$ sudo pip-3.2 install ezodf2...

Trabajar con imágenes

1. Representación informática de una imagen

Cuando pensamos en una imagen, pensamos en una fotografía y, por lo tanto, en una imagen de mapa de bits que, como su nombre indica, es una organización de bytes. La imagen tiene un tamaño fijo y una resolución dada, lo que significa que una imagen puede considerarse como tres tablas estáticas superpuestos de bytes, una para el rojo, otra para el verde y la última para el azul. Por lo tanto, cada casilla de la tabla o punto de la imagen tiene como valor una tupla de 3 bytes.

Esto se corresponde con lo que se llama una imagen de trama y es el tipo de imagen más común. Este es el tipo de imagen que toma una cámara, por ejemplo. Parafraseando el párrafo anterior, podemos ver una imagen como tres matrices superpuestas, siendo cada valor un byte o como una matriz única de 3 tuplas de bytes.

Si a primera vista la diferencia no es necesariamente obvia, estas diferentes formas de ver son importantes porque determinan el contenido de los algoritmos.

Estas imágenes son perfectamente adecuadas para el uso en ordenadores y para renderizar en una pantalla de ordenador, ya que los tres componentes, rojo, verde y azul, son los de la síntesis aditiva. Es decir, la adición de colores da el color blanco y la ausencia combinada de los mismos tres colores se corresponde con el negro.

Por el contrario, la reprografía requiere el uso de síntesis sustractiva, lo que funciona cuando se mezclan pigmentos (o pintura) y que es un poco más conocido por el público en general. La mezcla de magenta y cian da púrpura, magenta y amarillo da como resultado naranja, amarillo y cian da verde y la mezcla de los tres da marrón. En síntesis sustractiva, es muy difícil obtener niveles de negro y gris, por lo que se requieren pigmentos adicionales. Esta es la razón por la cual se diseñó la representación CMYK (cian, magenta, amarillo, negro).

Por lo tanto, la representación de una imagen de este tipo destinada a la reprografía ya no requiere una tupla de 3, sino una de 4 para cada píxel o 4 matrices en lugar de 3 para la imagen completa. Es obvio que el paso de tuplas de 4 a tuplas de 3 es único, pero que de tuplas de 3 a tuplas de 4, puede tener varias soluciones. Por lo tanto, los diseñadores gráficos...