DESCRIPCION DE LAS HERRAMIENTAS EMPLEADAS

DESCRIPCION DE LAS HERRAMIENTAS EMPLEADAS______________________________ 7 1.1-PDF 1.1.1 Introducción Las siglas PDF, corresponden a Formato de

11 downloads 145 Views 215KB Size

Recommend Stories


DESCRIPCION DE LAS ISLAS CANARIAS
DESCRIPCION DE LAS ISLAS CANARIAS CONSEJO SUPERIOR DE INVESTIGACIONES CIENTIFICAS INSTITUTO DE ESTUDIOS CANARIOS EN LA UNIVERSIDAD DE LA LAGUNA FON

Las Máquinas y Herramientas
MAQUINARIA Las Máquinas y Herramientas más Eficientes para Vestir Muebles Paola Andrea Ruiz Rojas Periodista M&M Tapizar ha sido un oficio que, usu

Las 5S, herramientas de cambio
Las 5S, herramientas de cambio Las 5S, herramientas de cambio Perfil del Capítulo Contenido Para obtener rentabilidad en un mercado cambiante y c

LAS HERRAMIENTAS MEDIEVALES
LAS HERRAMIENTAS MEDIEVALES Y LA CARPINTERIA MUDEJAR (El friso de los carpinteros de la techumbre de Teruel) ANTO 10 NAVAL MAS Al intentar estudiar

Las herramientas masónicas
[1] Las herramientas masónicas [2] Las herramientas masónicas Iván Herrera Michel [3] Las Herramientas Masónicas Análisis, su significado simb

Story Transcript

DESCRIPCION

DE

LAS

HERRAMIENTAS

EMPLEADAS______________________________

7

1.1-PDF 1.1.1 Introducción Las siglas PDF, corresponden a Formato de Documento Portable (Portable Document Format), y es el formato original de la familia de productos de la casa Adobe, creados a comienzos de los años 90 y que acabaron convirtiéndose en un standard "de facto". Permiten compartir y visualizar documentos electrónicos de todo tipo, independientemente de la plataforma donde fueron creados (Hardware y Sistema Operativo). PDF implementa el mismo modelo de imagen que el lenguaje descriptivo Postcript para describir textos y gráficos, de forma independiente del dispositivo y la resolución. Incluye hipertextos, imágenes, anotaciones, y actualmente, muchas más herramientas que facilitan el objetivo para el que fueron creados. Algunas de sus características más notables son:  Preservación de la fidelidad de los documentos, independientemente del dispositivo, plataforma y software.  Obtención de contenidos de diversas fuentes- Sítios web, procesadores de texto, documentos escaneados, fotos, gráficos- dentro de un único      

documento que mantiene la integridad de todos los elementos fuente. Colaboración en tiempo real desde diversas plataformas. Firma digital para garantizar la autenticidad de los documentos. Permisos y gestión de seguridad, que permiten mantener todo tipo de derechos al autor. Accesibilidad a los documentos por parte de discapacitados. Posibilidad de la extracción y re-uso de elementos de otros archivos y formatos. Posibilidad de formularios para integración con otros documentos o aplicaciones empresariales.

1.1.2 Estructura Un documento PDF consiste en una colección de objetos que, conjuntamente describen la estructura de una o más páginas, posiblemente acompañados de otros elementos interactivos o de información. 8

Un fichero PDF contiene los objetos que construyen el documento PDF, junto con la información de su estructura, todo en un flujo de bytes. La apariencia de una página es descrita mediante un flujo de contenidos, que contiene los elementos gráficos que deben ser dibujados en ella. Asimismo, contiene objetos electrónicos tales como dibujos, videos, hipertextos, otros archivos, formularios... Por último, el PDF contiene información lógica que permite el intercambio de datos entre aplicaciones.

1.1.3 Modelo de Creación de Imagen de Adobe PDF sirve como un lenguaje de descripción de página. De ésta forma existen dos fases: A. La generación PDF. B.

de la página por la aplicación que implementa el documento

Su posterior interpretación representación.

por el programa que controla el dispositivo de

Una de las principales cosas que un PDF puede hacer, es describir la apariencia de gráficos y tipografía. Esto lo realiza mediante el Adobe imaging model, que es la misma representación de alto nivel independiente de dispositivo usada para el lenguaje Postcript. Los elementos se describen de forma abstracta, como elementos, más que como pixeles. De ésta forma, se consigue la independencia de dispositivo de representación. Las figuras dibujadas pueden estar en forma de caracteres (glifos), formas geométricas, líneas o muestras de imágenes digitales. Y éstas formas, pueden estar en blanco y negro o a color. El flujo de contenidos posee operandos y operadores, que describen los objetos. Los principales objetos son: 

Caminos-Consisten en secuencias de puntos que construyen líneas y curvas mediante una serie de operadores, que gestionan su dibujado en la página.



Texto-Consiste en uno o más glifos que representan texto en la página. La forma en que los glifos representan los caracteres se haya en estructuras aparte, denominadas fuentes. 9



Imágenes-Las imágenes son matrices rectangulares, donde cada celda representa el color de esa posición en el rectangulo, tipico de las fotografias.

Aparte de esto, existe los márgenes de página (current clipping path) , que definen las áreas dentro de las que se pueden dibujar los objetos. Éstos se expresan como claves (keys) para describir la geometría de un documento en cada página. Sólo uno de ellos, el que describe el tamaño de la página (MediaBox) es imprescindible en el estandar PDF. Los demás son opcionales (aunque en subestándares como el PDF/X sean necesarios).

Fig. 1.1- PDF current clipping path

Todos ellos van expresados en la medida establecida por omisión para el usuario. Ninguno de ellos tiene bordes visibles, aunque en estos esquemas se han indicado con líneas continuas o discontinuas para mayor claridad.

Casilla de material (MediaBox) Una matriz de cuatro números que indica la zona máxima de la página, incluido cualquier espacio en blanco que se haya dejado más allá de los cortes, sangrados, marcas de registro o barras de color. Indica pues, el tamaño de la hoja de papel en la 10

que está situado el documento, no de la página final cuando se acabe el trabajo impreso.

Casilla de recorte (CropBox) Matriz de cuatro números que indica la zona rectangular de la página donde van los elementos que deben reproducirse o imprimirse. Esta casilla de recorte, no debe ser mayor que la casilla de material (MediaBox) y, si fuera así, la casilla de recorte

(CropBox), real será la intersección de la casilla de recorte y la casilla de material (MediaBox). Casilla de sangrado (BleedBox) Ésta otra matriz de cuatro números expresa la página de un trabajo impreso antes de que haya sido cortado o guillotinado. En ese sentido, indica la página impresa acabada antes de ser cortada por la guillotina (el valor que expresa la misma página ya guillotinada es la casilla de límite de página (TrimBox)). Nunca puede ser nunca mayor que la casilla de material.

Casilla de límite de página (TrimBox) Expresa la página de un trabajo impreso después de que haya sido cortado o guillotinado. En ese sentido, indica la página impresa acabada, ya cortada por la guillotina. El valor que representa la misma página antes de ser guillotinada es la casilla de sangrado (BleedBox).

Casilla de ilustraciones (ArtBox) Es una matriz de cuatro números también, que indica qué parte del fichero se debe usar si el documento pdf se coloca dentro de un documento en un programa de maquetación o diseño gráfico. La casilla de ilustraciones sólo se debe usar si el fichero pdf expresa sólo un elemento para colocar en otras páginas (un módulo de publicidad, por ejemplo), es decir: no es una página completa.

1.1.4 Sintaxis La sintaxis del PDF puede orientarse a 4 partes:

11

I.

Objetos

Un documento PDF esta compuesto de elementos de información

denominados

objetos. II.

Estructura del fichero PDF

Nos viene a decir en que forma están almacenados esos objetos en el fichero. Como se accede a ellos y como se actualizan. III. Estructura del documento PDF Nos dice como se utilizan los objetos para representar el PDF: páginas, fuentes, etc. IV. Flujos de contenidos Contiene una secuencia de instrucciones (tambien en forma de objetos), que describen la apariencia de una página. Al más bajo nivel, un PDF es una secuencia de bytes (8 bits). Éstos pueden agruparse siguiendo la sintaxis de la página, o para formar objetos. Se emplean caracteres ASCII para ello, siguiendo unas reglas y mediante unos delimitadores. Tambien es posible insertar comentarios, como en cualquier lenguaje representativo. Asimismo, se pueden insertar cadenas binarias, manteniendo la coherencia de éstas.

I.

Objetos

Hay 8 tipos de objetos:

Valores booleanos Numeros enteros y numeros reales Cadenas Nombres Matrices Diccionarios Flujos Objeto nulo Adicionalmente a estos objetos, trataremos otro más: los filtros, que si bien no forman parte de los objetos básicos, si integran a otro tipo de objeto. Los objetos tambien pueden ser etiquetados para ser referenciados. Ésta estructura es denominada Objeto indirecto. 12

Como se puede intuir, un lenguaje orientado a objetos implementa inmediatamente el formato de PDF. Los valores que pueden tomar los objetos son:

booleanos-Pueden tomar valores true o false numéricos- Hay enteros, y reales -en punto fijoObjeto Null-Equivale a ningun tipo de objeto, o a direccionar a un objeto inexistente. Cadenas-Series de bytes. Pueden ser caracteres literales o en hexadecimal. La barra (\) se emplea como caracter especial de escape, como en la mayoría de lenguajes de programación.

Nombres-Son símbolos unívocamente identificados con una secuencia de caracteres, de forma que si dos tienen la misma secuencia, son el mismo nombre. No poseen estructura interna. Un (/) en el formato PDF sirve para introducir un nombre. Cualquier grupo de caracteres están permitidos. Los hexadecimales también, introduciendose mediante (#). En ocasiones los nombres pueden representar texto, para así ser identificados más cómodamente, en cuyo caso, deben interpretarse mediante UTF-8 de Unicode, donde los ASCII a imprimir, tienen la misma representación

que los caracteres ASCII.

Matrices-Las matrices son colecciones unidimensionales secuenciales. Pueden ser heterogeneas (números, cadenas, diccionarios e incluso otras matrices). Comienzan con []. Para mayor dimensión, se pueden construir matrices de matrices.

Diccionarios-Este es el elemento principal, y más empleado en PDF, y que le da estructura similar a una orientación a objetos. Consiste en una tabla asociativa que contiene pares de objetos, conocidos como entradas. El primer elemento es la llave (key), y el segundo el valor (value). La llave debe ser obligatoriamente un nombre. El valor, en cambio, puede ser cualquier cosa, incluido otro diccionario. Los diccionarios vienen dentro de corchetes tal que . Sirven para contener objetos complejos como fuentes y páginas. La entrada /Type, define el tipo de objeto que describe el diccionario en cuestión.

13

Flujos-Son secuencias de bytes, como las cadenas. En diferencia con éstas, un flujo puede ser leido de forma incremental. Además, no esta sujeto a limitaciones de longitud. Esto lo hace ideal para descripciones de páginas o imagenes. Se construyen a partir de un diccionario (donde está la longitud del flujo y el posible filtro de decodificación), más la palabra reservada stream, y la secuencia de bytes, cerrada por endstream. Todos los flujos deben referenciarse por objetos indirectos.

Objetos indirectos-Cualquier objeto en el PDF puede ser etiquetado como indirecto. Esto le da una UID única, que permite diferenciarlo. Esta UID consta de un objeto numérico entero que sirve para indexarlo y un número de generación, cuya utilidad estriba en la gestión de actualizaciones. En un documento PDF, los objetos indirectos comienzan con su número, número de generación, y las palabras reservadas obj y endobj, delimitando el objeto. Cuando se referencia este objeto, se utiliza su número, número de generación y R (de reference).

Filtros-Los filtros son una parte de los flujos. Indica como debe ser decodificada la información de ese flujo para ser leída. Los filtros se subdividen en: Filtros ASCII y Filtros de Descompresión. Los primeros decodifican información codificada como texto ASCII. Los segundos, información que ha sido comprimida. Un ejemplo de filtro es FlateDecode. Es el tipo ASCII más común, basado en el compresor público zlib/deflate que implementa la codificación adaptativa Huffman.

II. Estructura del fichero En esta sección se describe cómo los objetos se organizan dentro del fichero PDF, para aumentar la eficiencia a la hora de acceder a ellos, y de actualizaciones incrementales. Un fichero PDF esta construido a partir de líneas, acabadas por marcadores de fin de línea (retorno de carro o nueva linea). Éstas están limitadas a 255 caracteres -a no ser que sean flujos-. Un fichero PDF consta de cuatro elementos: (Fig. 1.2)

14

Fig. 1.2: Estructura de un fichero PDF



Una cabecera de una linea, identificando la versión del PDF



El cuerpo, que contiene los objetos que construyen el documento mediante una secuencia de objetos indirectos. Dichos objetos, representan componentes del documento, como fuentes, páginas e imagenes.



La tabla de referencias cruzadas, que contiene la información

relativa a los

objetos indirectos que hay en el fichero. La tabla contiene una linea por cada objeto indirecto, especificando la dirección lógica de ese objeto en el cuerpo del fichero. Comienza con la palabra xref. Puede haber varias subsecciones de referencias cruzadas, segun actualizaciones posteriores por borrado, creacion, o actualizado de objetos. Si se acaba de crear el PDF, sólo contiene una tabla. Las entradas constan de dos números: el primero es el número de objeto de comienzo, y el segundo el número (cantidad) de esos objetos. Debajo, hay una línea de 20 bytes dividida en dos cifras: la primera cifra 15

corresponde al offset de ese objeto en el fichero, y la segunda corresponde al número de generación, que nos permite averiguar si un objeto ha sido reutilizado o no. La letra n nos indica que el objeto esta actualmente en uso. f significa libre. Los elementos (objetos) libres se enlazan unos con otros, de forma, que el primero de ellos (que es el 0), apunta al número de objeto que corresponde al siguiente libre. El último de ellos vuelve a apuntar al 0. En versiones posteriores de PDF, se utilizan los denominados flujos de

referencias cruzadas, que consisten en flujos que contienen estas tablas. 

El trailer, es la última parte del fichero. Sin embargo, el trailer es la primera parte que debe leer una aplicación al aceder a un fichero PDF. De esta forma, los ficheros PDF se leen desde el final. En ella, la aplicación encuentra la dirección de la tabla de referencias cruzadas cruzadas, donde puede obtener las direcciones de los objetos. El trailer acaba por %%EOF, y es por ahí por donde debe empezar la aplicación a leer. Tambien hay información significativa sobre el fichero, sobre la anterior tabla de

referencias cruzadas (cuando hay actualizaciones –ver Fig.1.3-)asi como sobre el objeto Root (raíz del documento PDF).

Fig 1.3: Actualización de un fichero PDF

16

Encriptación Un PDF puede encriptarse, para proteger sus datos de accesos no autorizados. La encriptación se aplica a todos los elementos del fichero, pero no a números enteros o valores booleanos. La información de encriptación se almacena en un diccionario de encriptación. La entrada Encrypt identifica este tipo de encriptación, mientras que la entrada V especifica el algoritmo de encriptación (antiguamente RC4 de Adobe, actualmente sustituido por AES (Advanced Encryption Standard) ambos simétricos. Tambien está la entrada correspondiente al manejador de seguridad. Éste gestiona el acceso a los datos encriptados mediante dos posibles contraseñas (de usuario y de propietario del documento).

III. Estructura del Documento Los objetos dentro de un documento PDF siguen una jerarquía, tipo árbol (ver Fig.1.4). En la raíz (objeto Root), esta el denominado Catálogo. La mayoría de los objetos son diccionarios. Por ejemplo: las páginas estan representadas por objetos Page (página), que son diccionarios que hacen referencia a los objetos dentro de esa página. Las conexiones se efectuan mediante referencias indirectas a otros diccionarios.

Catálogo Es identificado como Root. Contiene las líneas principales que definen el documento PDF, contenidos, como deben mostrarse éstos en la pantalla y que página debe mostrarse en primer lugar.

Árbol de páginas El árbol de páginas indica como son ordenadas las páginas dentro del documento y en que orden se acceden. Existen nodos de páginas (intermedias) y páginas (que son las hojas en la estructura de árbol). Los nodos de páginas Pages son agrupaciones de páginas. No tienen porqué coincidir con las secciones o capítulos del documento. Se agrupan normalmente en función de características comunes. Las hojas Page, si corresponden a cada una de las páginas del documento. Éstas pueden heredar atributos de los nodos superiores Pages. Entre sus atributos, están los 17

ya comentados Mediabox, Cropbox, Bleedbox, Trimbox. También existe la entrada

Resources, que es en la que aparecen las fuentes empleadas en esa página (caracteristica que nos atañe especialmente, por el objetivo de esta memoria). Diccionario de Nombres Muchos de los elementos del documento PDF pueden referenciarse por un nombre, más que por su número de objeto. Ésta correspondencia está en el diccionario de

nombres. Su entrada Names está en el Catálogo. IV. Flujos de Contenidos Los flujos de contenidos son la forma inmediata de describir la apariencia de las páginas y sus elementos gráficos. Cada página puede estar descrita por uno o más flujos de contenidos, que contienen: elementos gráficos XObjects, patrones

Patterns, algunos tipos de fuentes (sintéticas Type3) y anotaciones Appearance Streams. El flujo se interpreta según sus objetos, como operandos (esos objetos), y unos operadores, que nos dicen en que forma deben utilizarse esos operandos. Por ejemplo, en que forma debe dibujarse una forma determinada. Los que a nosotros nos interesan son los operadores que dibujan texto usando los glifos (implementación Resources).

de caracteres), definidos en las fuentes (dentro del campo

Un flujo es una secuencia de objetos comprimidos, lo cual permite reducir el tamaño del fichero PDF significativamente. No pueden aparecer dentro de en un flujo: -Otro flujo. -Objetos con número de generación superior a 0 (que hayan sido actualizados). -El diccionario de encriptación de un documento PDF. -El diccionario que contiene la longitud de un flujo. Las referencias indirectas a estos objetos dentro del flujo son iguales que antes. Por ejemplo: 14 0 R. Sin embargo, la forma de acceso es diferente. Los objetos se almacenan dentro del flujo normalmente formando colecciones de objetos con caracteristicas comunes. El flujo contiene: -N pares de enteros. Cada uno representa el numero de objeto y su offset. -Los objetos, de forma consecutiva (aqui no se usa obj y endobj). Cuando se actualiza un objeto que esta dentro de un stream, éste no se reutiliza, 18

sino que la actualización recibe un nuevo número y se asigna a otro stream diferente.

Diccionarios de Recursos Ya que los flujos no permiten utilizar objetos indirectos, es necesario resolver el problema de que, a la hora de describir una página, necesitemos referenciar a objetos que estén fuera del flujo, como fuentes o mapas de imágenes. Esto se consigue mediante los recursos (Resources), a los cuales se refiere en los flujos mediante su nombre. Los recursos se agrupan en diccionarios de recursos, donde están los nombres de esos

recursos a los que se hace referencia en los flujos de contenidos. Por ejemplo: en un flujo se puede hacer referencia a la fuente F2, la cual esté definida (fuera del flujo) en el diccionario de recursos como F2 = TimesNewRoman.

1.1.5 Texto Tal como se avanzó anteriormente, el texto se representa mediante glifos que proceden de fuentes. Un glifo es una forma gráfica, y por tanto puede ser manipulada. La forma en que se dibujan estos glifos comprende los siguientes conceptos: I. II.

Estado del texto-Representado por un conjunto de parámetros que seleccionan valores, como la fuente y la escala a un determinado tamaño. Objetos de texto y operadores-Los operadores especifican los glifos a dibujar. Un objeto de texto consta de operadores y de sus parámetros asociados.

Las fuentes están estructuradas mediante diccionarios. Éstos proporcionan información

al visualizador de PDF información

sobre como debe interpretar el

texto y posicionar los glifos.

Uso de fuentes Un carácter es un símbolo abstracto, mientras que un glifo es la representación especifica de un carácter. Por ejemplo, sin utilizar ninguna fuente concreta, el uso de negrita en A, o itálica en A son glifos que representan al carácter abstracto "A". Los glifos se organizan en programas fuentes con un nombre determinado. Ej: Helvetica o Times. Estos programas se escriben en un lenguaje determinado, como Type1 o TrueType, 19

que son interpretados por programas específicos. En PDF, normalmente una fuente se refiere a un diccionario, que contiene el programa de la fuente, en el denominado FontFile -normalmente en forma de un stream-, y una serie de campos que proporcionan información adicional. Los glifos contenidos en el programa de la fuente, están representados por secuencias de códigos, que pueden ser incrustados o no en el PDF (parte que nos atañe en esta memoria), construidos por alguna aplicación u obtenidos de un fichero externo. En un flujo de contenidos, se especifican los códigos que pertenecen a los glifos de una fuente determinada. Esto se llama muestreo de la cadena de texto. Éstos se dibujan siguiendo la descripción del glifo dada en el programa de esa fuente.

Muestreo de texto La forma más comun de muestreo de una fuente es por ejemplo: BT

/F13 12 Tf 288 720 Td (ABC) Tj ET BT-significa “Begin Text”-Es la etiqueta de comienzo Fx-fuente (externa al flujo de contenido, ya que en los flujos no pueden aparecer referencias, solo nombres) Tf-su tamaño

Tj-La posición de comienzo del texto ET-Etiqueta de “End text”, finalización del texto En el siguiente ejemplo, se muestra como en Recursos, aparece la fuente comentada, y la referencia a esta (su numero de objeto).

/Resources > 23 0 obj > endobj Posteriormente en el fichero, podemos ver el objeto y podemos que éste corresponde a la fuente Helvetica. Las fuentes están definidas para un tamaño standard que corresponde (tamaño 1) a 1/72 pulgadas. Tf, Td y Tj, son operadores de texto. Hay numerosos más, como de creación de efectos gráficos específicos. Si se desean consultar activamente todos los que hay y sus funciones, el lector puede remitirse a la refencia de PDF (ver bibliografía). Los glifos tienen una longitud (Width), o desplazamiento horizontal del cursor que dibuja los glifos en el acto de dibujarlos. Las fuentes en la que no varia de glifo a glifo esta longitud se llaman monoespaciadas. Sin embargo la mayoria de las fuentes utilizan longitudes distintas para cada glifo. Estas son llamadas proporcionales. También es interesante el concepto de marco "Bounding Box" del glifo, en el cual este es dibujado mínimamente (sus limites). Las fuentes Type1 tienen asociadas un fichero denominado AFM que contiene las métricas de dibujado de los glifos. En ocasiones este fichero es denominado PFM.

Estructuras de Datos de Fuentes Una fuente es representada por un diccionario, que especifica el tipo de fuente, su nombre Postcript, su codificacion, y otros datos. Adicionalmente, la fuente (su programa), puede ser incrustado, como ya se adelantó. El tipo de las fuentes se distingue por su Subtype. Las fuentes Type0 son conocidas como compuestas, porque comprenden unos objetos adicionales denominados

CIDFont y Cmap (que se comentarán más adelante), mientras que el resto son fuentes simples.

Principales campos en un diccionario de Fuente (Ver Fig 1.4) Type-“Font” (es el tipo de diccionario) Subytpe-el tipo de fuente, según el lenguaje de representación 21

Name-El nombre por el cual es referenciado en los flujos de texto esta fuente BaseFont-El nombre auténtico de la fuente, utilizado por los dispositivos FirstChar-El primer carácter definido en las Widths LastChar-El último carácter definido en las Widths FontDescriptor-Hace referencia a un diccionario que contiene las métricas de los glifos

FontBox-Matriz que describe el marco mínimo de representación de los glifos Encoding-Puede contener un diccionario que especifique un determinado código de construcción de los glifos. Un código es una tabla que asocia a un determinado caracter un glifo determinado. Este varia de S.O. a S.O. por eso se permite su cambio. Ej: MacOS usa el MacRomanEncoding, mientras que Windows usa el

WinAnsiEncoding. ToUnicode-Referencia a un flujo que contiene un fichero CMap que mapea los caracteres con valores Unicode.

22

Fig 1.4: Ejemplo de diccionario de fuente

Fuentes simples Las características comunes a las fuentes simples son: Los glifos son seleccionados por caracteres de un solo byte (256 glifos únicamente). Cada fuente tiene un código de construcción (ej: Ansi), que puede ser cambiado. Cada glifo también posee unas métricas (Widths) que en la mayoría de los casos está presente en forma de un descriptor de fuente (FontDescriptor). Dentro de éste descriptor puede existir (en caso de fuente incrustada) un campo que referencie al

FontFile.

23

Type1 Son fuentes con programa en lenguaje Postcript. Incluye descripción completa de los

glifos y representación de alta calidad y resolución. Las 14 fuentes Postcript standard son: Times-Roman

Helvetica

Times-Bold

Helvetica-Bold

Times-Italic

Helvetica-Oblique

Courier Courier-Bold

Symbol ZapfDingbats

Courier-Oblique

Times-BoldItalic Helvetica-BoldOblique Courier-BoldOblique La mayoría de las aplicaciones, conocen estos tipos de fuentes, y por ello, no son necesarias las especificaciones de sus métricas.

Multiple Master Fonts Es un subtipo de las Type1 que permite definir distinas formas de escritura de los

glifos, en un sólo programa de fuente. TrueType Las fuentes Truetype fueron diseñadas por Apple Computer,Inc. y tomadas como standard por el S.O. Microsoft Windows. En éstas fuentes, el campo BaseFont es rellenado siguiendo el nombre que tiene en

Postcript, o según el nombre que le da el S.O. Los nombres TrueType pueden contener varios bytes, ya que hay nombres de fuentes, como las CJK (Chinese, Japanese, Korean) que tiene sus nombres en lenguaje oriental y deben representarse con códigos distintos de los básicos (1 byte). Éstos aparecen mediante un símbolo #, seguido del código de representación. Debido al sistema de mapeado de caracteres en glifos (encoding) que usa Truetype, que depende fuertemente de la aplicación que los dibuja, Adobe recomienda que se incruste la fuente. Si bien, esto no siempre ocurre, y es lo que la aplicación sobre la que trata esta memoria va a solucionar.

Subsets Tanto de las Type1 como de las Truetype, se pueden incrustar subsets de caracteres 24

(comprenden sólo los caracteres empleados en el texto) en el PDF. El nombre consiste en una etiqueta (6 letras en mayúsculas arbitrarias), más (+) y el nombre original de la fuente.

Type3 Son distintas de las anteriores porque la fuente esta definida en el diccionario. Los

glifos estan definidos en flujos de operadores gráficos. Estos están relacionados con sus nombres. Cuando el programa quiere dibujar los glifos, primero busca el Encoding y luego busca el caracter a dibujar en su flujo de operadores correspondiente.

Type 0 (Fuentes Compuestas) Es un tipo de fuente, en que los glifos son obtenidos de una estructura llamada

CIDFont, y referenciada como descendiente "Descendant" en el diccionario de la fuente. Para las fuentes simples, un byte referenciaba todos los caracteres con los glifos. Aqui los glifos se seleccionan por uno o más bytes. Esto es útil sobre todo para fuentes CJK. Las fuentes compuestas tienen una representación de los programas de fuentes distinta, definida por los diccionarios CIDFont y los CMaps. CID en CIDFont significa "identificador de caracter", y emplea en vez de los nombres de los caracteres, números para acceder a los glifos, lo cual es un metodo más eficiente para el acceso a grandes cantidades de ellos. Esto es, a cada glifo se le asocia un número. Un Cmap va a relacionar esos números con los caracteres. El concepto es el mismo que con el Encoding básico. Sin embargo permite el acceso a miles de glifos más, mediante más bytes empleados en los CIDs. Un programa CIDFont, contiene las descripciones de los glifos para un set completo de caracteres. Estas son muy parecidas a las Type1, pero organizadas de forma diferente. El programa CIDFont y el Cmap pueden ser referenciados e incrustados dentro del PDF, indicándose en sus diccionarios respectivos. Hay de dos clases: Type 0 CIDFont, basadas en Postcript, y Type 2 CIDFont, basadas en Truetype. (Ejemplo de CIDFont) Aunque los CIDFonts, en su entrada Type pone “Font” (para identificar que este objeto referencia a una fuente), no es una fuente en sí, sino el codificado de ésta. 25

Las fuentes compuestas, tambien siguen unas métricas especificadas por unos parámetros distintos de los de las fuentes simples. El Cmap, además, contiene información sobre la dirección en que debe escribirse el

glifo (horizontal, vertical o combinación). Los Cmaps normalmente vienen ya predefinidos (normalmente siguiendo Unicode) a partir de unos genéricos (Identity-H e Identity-V).

Programas de Fuentes Incrustados Como ya se dijo con anterioridad, los programas de fuentes se pueden incrustar en forma de flujos (streams) en el PDF, llamados también FontFile. Los tipos son:

Fontfile

El original para Postcript definido por Adobe.

Fontfile2

Para fuentes tipo TrueType.

FontFile3

Hay Type1C o CIDFontType0C, que corresponde al Compact

FontFormat (CFF) y las fuentes Opentype (extensión TrueType que permite fuentes en formato CFF.

de las

26

1.2-PERL Este apartado, revisará algunos conceptos básicos de Perl y de Programación Orientada a Objetos de Perl; si bien, no pretende ser un manual exhaustivo de tal. Para ello, remítase el lector a uno de los múltiples manuales que hay, o de los que se encuentran en la bibliografía. Perl es un lenguaje de programación desarrollado por Larry Wall a partir de algunas herramientas de UNIX. De esta forma posee ciertas similitudes con el lenguaje C. Uno de sus lemas es "Perl hace faciles las cosas simples y posibles las cosas complejas". No posee ninguna filosofía de programación concreta: no se puede decir que sea

orientado a objetos, modular o estructurado, pero permite la utilización de todos estos paradigmas. En el caso que nos ocupa, hemos de centrarnos en la utilización de objetos. Perl no es un compilador ni un intérprete de código, sino que es algo intermedio entre los dos. Cuando ejecutamos un programa, se compila el código fuente a un código intermedio en memoria que se optimiza, pero luego es interpretado por un motor. Caracteristicas interesantes de Perl son:  No hay que declarar los tipos de variables. En caso de hacerlo (con "my" $var), éstas dejarán de ser globales para tener ámbito léxico (depende de donde se



encuentren) Las variables van precedidas por caracteres especiales como $ @ y % , que indican su tipo

  

También se distingue entre mayúsculas y minúsculas Las sentencias van terminadas por ";" para delimitarse entre ellas Los comentarios comienzan con "#"

Cabe decir que en el código de Perl también encontraremos PerlPod, que es un lenguaje de marcación simple, que se interpreta como comentarios, y que permite invocar el comando "perldoc" sobre un programa Perl y nos aporta información tipo "man" sobre este, tales como su funcionamiento, su autor, actualizaciones, etc. Este se escribe con etiquetas como "=head" o "=cut".

27

1.2.1 Revisión de sintaxis de Perl I. Tipos de datos: Los principales son: Scalar ($), Array (@), Hash (%) – Éstos últimos son una colección de valores indexados por una clave. Existen otros tipos como Filehandle, para manejo de ficheros, o Glob, que permite referenciar cualquier otro tipo de datos (tipo genérico). II. Tipos de estructuras de control: Condicionales: if...else, elseif, unless Repetitivas: For, While,Do...Until, Foreach (siendo ésta última una de las más usadas). III. Expresiones regulares y patrones de búsqueda: Una de las características más potentes de Perl es la manipulación

de cadenas, mediante expresiones y

patrones que nos facilitan esta tarea. Ej: if ($var=~/Hola/) ... Ejecutaría una sentencia determinada si en la cadena $var se encuentra "Hola". Como se puede ver $var es la cadena, porque la hemos definido en la misma sentencia como tal, pero podría haber representado un entero o una referencia en su lugar. IV. Sustitución en expresiones regulares: Es la otra función de Perl asociada al tratamiento de expresiones. Permite sustituir en cadenas caracteres por otros. Ej: $var=~s/Hola/Adios/g Sustituiria “Hola”, por “Adios” y debido al operador "g", lo haría globalmente en todas las ocurrencias de “Hola“dentro de $var. Otras funciones aplicadas a expresiones regulares son: Split, que subdivide una cadena e inserta los trozos en una matriz y Join, que realiza la operación inversa. V.

Subrutinas: En perl se permite programar funciones propias, siempre que éstas se declaren con anterioridad antes del programa principal (main). Ej: sub mi_subrutina 28

Cuando se pasan parametros a una función, se hace a través de una matriz especial, "@_", donde están contenidos.

1.2.2 Programación Orientada a Objetos en Perl Viendo las recomendaciones de PDF (que es realmente lo que nos interesa), nos damos cuenta de que su estructura está preparada para ser implementada mediante

objetos. En programación de objetos, éste se define como una estructura que nos permite hubicar, utilizar, y modificar cualquier tipo de datos. Una clase es la estructura abstracta de ese objeto, antes de que sea creado. Los datos se guardan en forma de atributos del objeto, y son consultados o manipulados mediante métodos. Es interesante también mencionar la llamada herencia, que permite que unas clases deriven de otras, y asi sus realizaciones en memoria (los objetos), puedan usar las funciones (métodos) de la clase o las clases padres (herencia multinivel). Por último, el polimorfismo permite que diferentes objetos respondan de forma diferente a una misma sentencia, dependiendo a que clase pertenezcan. Los objetos normalmente se crean a partir de una clase (mediante la orden bless), y luego lo que se usa de ellos generalmente son sus métodos. Los métodos son subrutinas definidas dentro de la clase o del objeto mismo (una vez ha sido creado). A ellas se accede mediante la sintaxis $objeto->metodo (). Cuando se trabaja en un proyecto grande, es necesario definir unidades de organización para el programa. De esta forma, cuando usamos una variable que está en el programa principal (main ()), empleamos la sintaxis $main::var. Lo mismo sucede con las funciones. De ésta forma, se puede abordar la programación de objetos con mayor facilidad. La forma de realizar esta sixtaxis para que funcione, es mediante el uso de los llamados

packages. Un package es un tipo de módulo. Los módulos son ficheros que contienen código listo para ser incluido en nuestro programa. Cada package por tanto, es un fichero ".pm" (denominación de package), que contiene una de las clases que hallamos definido en nuestro proyecto. El nombre del fichero, coincide con el nombre de la

clase que contiene, para hacer más intuitiva su utilización. 29

Para incluir un módulo (o package) en nuestro código, símplemente usamos una sentencia “use package.pm”. Los métodos u objetos definidos en ese fichero (esa clase), permiten ser utilizados en el código de otra, símplemente escribiendo Mi_package::funcion en el código donde se quiere hacer uso. O en el caso del método de un objeto Mi_package->metodo. Como parte de su sintaxis, incluye la jerarquia representada por "::", lo cual quiere decir que procede de otro módulo (fichero distinto). Al comienzo del código de los packages existe un array característico: el @ISA, en el cual está la clase o las clases padres, de las que recibe su herencia. Además de los packages, existen las denominadas bibliotecas, que normalmente constan de un conjunto de definiciones y se identifican porque su código acaba con un ”1”. Se usan mediante la instrucción "require biblioteca.pl”. Sin embargo, los packages se diferencian de éstas últimas en que se ejecutan en tiempo de compilación, no cuando se llega a la instrucción.

30

1.3-PDF::API2 1.3.1 Introducción La API2 para PDF, es la segunda versión de la PDF::API original, su predecesora, comenzada a construir en 1999 por Alfred Reibenschuh, austríaco, que trabaja para

Informations Technologie Gmbh de Austria, y es el actual mantenedor, liberador de nuevas versiones y debugger de la misma. Su definición es : “A Perl Module Chain to facilitate the Creation and Modification of High-Quality Portable Document Format -PDF- Files”. La PDF::API es un trabajo conjunto de varias personas, como Martin Hosken, Lester Hightower, y que Alfred usó como base, mejorándolo y posteriormente creando el resto de módulos. Básicamente, la API se encarga de construir un archivo pdf, siguiendo las pautas de la referencia PDF.

1.3.2 Licencia La PDF::API2 tiene licencia GNU Lesser General Public License. La principal diferencia entre la GPL y la LGPL es que la última puede enlazarse con un programa no-GPL, que puede ser de software libre o propietario. Los programas no-GPL o no-LGPL se pueden distribuir bajo cualquier condición elegida si no se tratan de trabajos derivados “derivative work”. Si se trata de un trabajo derivado entonces los terminos deben permitir modificación por parte del usuario para uso propio y la utilización de técnicas de ingeniería inversa para desarrollar dichas modificaciones. Este tipo de licencia se aplica a cualquier programa o trabajo que contenga una nota puesta por el propietario de los derechos de su obra, estableciendo que su trabajo puede ser distribuido bajo los términos de esta "GPL General Public License". En ellas el "Programa" se suele denominar al trabajo original, y el "trabajo basado en el Programa" se refierea cualquier trabajo derivado del mismo bajo la ley de derechos de autor: es decir, un trabajo que contenga el Programa o alguna porción de él, ya sea íntegra o con modificaciones o traducciones a otros idiomas. 31

Por ejemplo, OpenOffice de Sun Microsystems emplea la LGPL, y hoy en día se está cada vez popularizando más este tipo de licencia, ya que permite mayor versatilidad e interconexión con otros programas.

1.3.3 Características La PDF::API no es la única API creada para construir programas que creen o trabajen con PDF. Hay muchos, empezando por los de la casa Adobe, cruzando toda la gama, desde el software propietario, hasta el software libre. Ejemplos de algunos libres son:

Ghostscript PDFLaTeX Panda, también en Perl ReportLab en Python iText en Java La API2 trabaja en Perl, lenguaje perfectamente compatible con cualquier S.O., lo cual es una ventaja añadida, y es de los libres, quizá el más completo de todos. La última versión es la PDF-API2-0.69 del 18 de Enero del 2008.

Principales características 

Puede trabajar con más de un fichero PDF a la vez (las anteriores no podían).

 

Presenta una interfaz orientada a objetos al usuario.

        

Puede importar páginas de documentos PDF existentes.

 

Permite incluir imágenes PNG (.png).

 

Permite incluir imágenes TIFF (.tiff) Permite incluir imágenes de mapa (.pbm/pgm/ppm).

Modifica documentos PDF existentes. Incluye las 14 fuentes básicas PDF. Incluye subsets de las fuentes PDF CJK (Chinese-Japanese-Korean) básicas. Incluye un subset de las Webfonts de Microsoft (no están incrustadas). Permite incluir fuentes Adobe Type1en ambos formatos (.pfa/pfb). Permite incluir fuentes Truetype (.ttf). Permite incluir fuentes Opentype con características Truetype (.ttf). Permite incluir fuentes Opentype con características Postcript (.otf). Permite incluir imágenes JPEG (.jpeg). Permite incluir imágenes GIF (.gif).

32

1.3.4 Estructura de la PDF::API2 La API sigue los patrones estructurales de la PDF Reference de Adobe a la hora de construir un PDF. De esta forma, y tal como hemos visto, se estructura a través de objetos, en forma de bibliotecas “.pm”. (Ver página siguiente)

Figura 1.5: Estrucutra de la PDF::API2

Tal como se puede ver, existe un package principal (API.pm) que es la interfaz con el usuario y posee las funciones a más alto nivel, sobre las que el usuario no tiene que porqué preocuparse de su estructura interna. Las operaciones básicas de creación de un fichero PDF, creación de texto, o añadir fuentes y objetos gráficos se pueden gestionar mediante métodos simples, abstraidos a partir de packages más complejos que están por debajo. Por ejemplo:

33

Figura 1.6: Algunas funciones básicas de la interfaz PDF::API2

En el ejemplo superior (extraido del PerlPod), podemos ver una serie de funciones básicas de la API, como open, o corefont. La primera está definida dentro del fichero que contiene la interfaz (API2.pm), pero la otra, es una abstracción de una función mucho más compleja que está definida en otro package a más bajo nivel. Si está definida en la API, es para que podamos llamarla desde ella, sin necesidad de tener que escribir la sintaxis de acceso hasta el package que está en un nivel más inferior. Un ejemplo muy básico de (Mostrar también algun ejemplo de creación

de fichero con la API)

La API es la que construye toda la estructura del documento PDF, tal como la hemos visto en las especificaciones PDF: El catálogo y la estructura en árbol. Por debajo de ella, están los packages que construyen dicha estructura en árbol: Vemos una serie de packages y unos directorios. Los packages, son abstracciones de

clases que se emplean en la interfaz primariamente, y otros que construyen las hojas del árbol, como Page. Los directorios son: (Fig. 1.2)

Resources: Directorio integrado por los recursos que emplea el documento PDF.  Las fuentes: CIDFonts (Fuentes compuestas), y simples (bajo BaseFont). Debajo de ellas están los objetos tipo fuente, que se construyen a partir de las 14 fuentes básicas PDF, o a partir de ficheros externos (.ttf o pfa/pfb para

Postcript). Sus objetos van a leer los valores de dichos ficheros y crear los campos específicos, según el tipo de fuente, insertando el programa de glifos en un stream en caso de que se incruste la fuente.



Los objetos externos: Xobjets. Estos comprenden dibujos y gráficos.

Contents: Este directorio contiene los packages relativos a la creación de objetos de texto y su gestión en forma de flujos de contenido. Basic:Dentro de Basic hay dos directorios: Uno para fuentes Truetype TTF, donde hay una gran cantidad de packages. Estos son necesarios debido a la dependencia de las fuentes Truetype con el Sistema Operativo y a su mayor complejidad frente a las

Postcript. El otro es PDF quizá el más importante de ellos, ya que aquí es donde están los packages que sirven para la creación de todos los objetos básicos que existen en PDF, 34

y los métodos para escribir éstos en el fichero (a más bajo nivel), una vez ya está conformada la estructura en árbol del documento PDF. Existen packages para crear el fichero PDF en sí (su estructura), y luego los objetos básicos que define la especificación PDF: numerales, matrices...y los más importantes de todos: los diccionarios y los indicadores de objetos, que son los objetos que referencian a los primeros (o a cualquier otro objeto).

35

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.