Ir al contenido

PGD | §3.7 – Convenciones de estructura de documentos PostScript (DSC)

< 3.6 – Tecnología del procesamiento PostScript

¿En qué difiere un documento PostScript creado por un driver de los ejemplos anteriores escritos por nosotros? Si hacemos el experimento de crear un diseño muy simple en un programa cualquiera y luego imprimirlo a un archivo PostScript, veremos que se ha generado una cantidad exorbitante de código, siendo difícil “ver” en qué parte del mismo se encuentran las instrucciones que efectivamente crean nuestro diseño. Por otro lado, nuestro código es más simple, aunque un intérprete que lo procese no sabrá cuántas páginas tiene, que recursos necesita (qué fuentes se requieren, cuáles modelos de color se emplean, por ejemplo) hasta no haberlo procesado por completo. Es deseable que el código estuviera más ordenado, de manera que un intérprete pudiera saber cuál es la estructura del documento para así conocer de antemano qué se requiere para procesarlo.

Hemos visto que PostScript no impone ninguna estructura particular a la forma en la cual un documento debe ser escrito. Por lo tanto, cualquier estructura que se pretenda aplicar a un programa PostScript sólo puede provenir de una convención en la manera de escribirlo.

Adobe definió un conjunto de reglas para la generación de un documento PostScript, especificación que se denomina Convenciones de Estructuración de Documentos en Lenguaje PostScript o DSC (PostScript Language Document Structuring Conventions Specification).

En su versión 3.0 de la especificación, Adobe brinda las siguientes razones para justificar su introducción:

“…Su uso no sólo ayuda a asegurar que un documento es independiente del dispositivo, sino que permite al lenguaje PostScript comunicar su estructura y requerimientos de impresión a los administradores de documentos de manera que no afecte la descripción de página del lenguaje PostScript”.

En esta argumentación se presenta la idea de un administrador de documentos, que Adobe define como cualquier sistema preparado para recibir documentos PostScript y decidir que transformaciones deben aplicarse en ellos y en cuáles impresoras y con qué orden o prioridad serán enviados:

“Un administrador de documentos puede pensarse como una aplicación que manipula el documento PostScript basado en las convenciones de estructura halladas en él. En esencia, un administrador tal acepta uno o más programas PostScript como entrada, los transforma de alguna manera, y produce un programa PostScript como salida”.

La inclusión de una estructura explícita de documento permite a tales administradores de documentos otorgar ciertos servicios de impresión[1]; éstos pueden estar limitados o ser directamente denegados a un documento que carezca de esa estructura.

Estructura de documentos según las convenciones DSC

En los ejemplos previos, PostScript nos ha inducido naturalmente a la creación de documentos con dos partes bien definidas:

  • El prólogo (prolog) contiene definiciones de procedimientos que se usarán a lo largo del documento. No describen ningún elemento concreto ni realizan marcas en la página.
  • El guión (script) contiene instrucciones que definen el contenido de la página, haciendo uso de los procedimientos ya definidos en el prólogo.

Podemos ver esta separación en el ejemplo anterior de la tira de control:

%!
/mm { 25.4 div 72 mul } def
/parche { setgray 15 mm 15 mm rectfill } def
/parchenumero {
dup 15 mm mul 0 mm 3 2 roll 10 div parche
} def
Prólogo
(definición de procedimientos: no se realizan marcas en la página)
0 1 10 { parchenumero } for
showpage
Guión
(creación del diseño: se realizan marcas)

Mientras en nuestro ejemplo esta separación resultó conveniente, en DSC esta organización es obligatoria. Por esta razón, los drivers de impresión PostScript deben poner en el prólogo una enorme cantidad de procedimientos para hacer frente a todas las posibles necesidades de creación de trazos en la página, ya que este mecanismo es mucho más rápido que analizar cada página y descubrir exactamente cuáles procedimientos se necesitan[2].

Para que los servicios de impresión antes mencionados sean posibles, las convenciones DSC parten de dos premisas:

  • Debe incluir información que comunique la estructura del documento a las aplicaciones que lo requieren;
  • La información debe agregarse de manera que un documento PostScript así estructurado siga siendo un documento PostScript válido.

Para lograr estos objetivos se incorpora la información que define la estructura del documento en forma de comentarios PostScript (líneas que comienzan con %), para no interferir con el funcionamiento normal de un intérprete. Estas convenciones especifican los tipos de comentario que es válido incluir en el documento, denominados comentarios DSC. A diferencia de los comentarios regulares, todos los comentarios DSC comienzan con %% (doble porcentaje) seguido de una palabra y opcionalmente un separador “:” más uno o más parámetros; todos ellos se describen en la especificación DSC junto a su aplicación.

El prólogo comienza con el encabezado (header) que identifica al documento como PostScript. Mientras que hasta ahora un documento debía comenzar sencillamente con %!, un documento PostScript DSC debe comenzar con una firma algo más compleja:

%!PS-Adobe-3.1

que indica que se trata de un documento PostScript conforme con la versión 3.1 de la especificación DSC. A partir de aquí pueden existir una serie de comentarios informativos, hasta el final del encabezado, indicado por %%EndComments. Un ejemplo de encabezado DSC está dado por el siguiente ejemplo:

%!PS-Adobe-3.1
%%Title: 5001 DSC Specs.doc
%%Creator: Adobe Acrobat 8.0
%%For: Ing. Edgardo Garcia
%%CreationDate: 11/06/2007, 17:15:15
%%BoundingBox: 0 0 612 792
%%HiResBoundingBox: 0 0 612 792
%%CropBox: 0 0 612 792
%%LanguageLevel: 2
%%DocumentNeededResources: (atend)
%%DocumentSuppliedResources: (atend)
%%DocumentNeededFeatures: (atend)
%%DocumentSuppliedFeatures: (atend)
%%DocumentData: Clean7Bit
%%PageOrder: Ascend
%%Pages: (atend)
%%DocumentProcessColors: (atend)
%%DocumentCustomColors: (atend)
%%EndComments

En algunos comentarios se observa un parámetro (atend); éstos indican que el verdadero valor de ese parámetro estará disponible al final del documento.

Las especificaciones describen detalladamente cómo se estructura el documento, en particular las definiciones de procedimientos y la organización del guión, indicando el comienzo y el final de cada página, hasta el comentario que indica el final del documento, %%EOF. Una descripción completa sería demasiado extensa; simplemente se pretende poner de manifiesto las razones por las cuales un documento PostScript creado profesionalmente siempre resulta considerablemente más complejo que los ejemplos mostrados aquí. En cambio, será más ilustrativo ver algunas de sus aplicaciones.

§3.8 – Aplicaciones de las convenciones DSC >

1 La enumeración de estos servicios queda fuera del alcance de este apunte; puede consultarse en el capítulo 2 (Document Manager Services) del PostScript Language Document Structuring Conventions Specifications, versión 3.0, de Adobe.
2 En otras palabras, los drivers están optimizados para la velocidad de generación y no para el tamaño de los documentos PostScript así creados.