Ir al contenido

PGD | §3.5 – Errores PostScript

< §3.4 Gráficos

De los ejemplos precedentes podemos concluir que el éxito de la ejecución de cada operador depende por completo del estado de la pila, ya que allí se aloja toda información requerida o devuelta. Por este motivo, una vez que se encuentra un error, PostScript no puede recuperarse; sólo puede informar del mismo, junto con el contexto en el que se produjo, mediante un mensaje en pantalla o, en el caso de las impresoras, un mensaje impreso.

Existen muchas razones que pueden dar origen a un error PostScript: errores en el propio código, falta de recursos en el propio intérprete para procesar el archivo, alteración o corrupción de los datos durante las transferencias, e incompatibilidades entre drivers y aplicaciones. Entre los primeros, a su vez, algunos se producen por falta de los operandos necesarios para los operadores empleados; otros se producen por utilizar tipos de datos diferentes a los requeridos (texto en lugar de números, por ejemplo); otros dependen del contexto en los que se emplean (trazar una línea sin antes tener un punto de comienzo); entre los segundos, algunos errores que se producen al agotar recursos del intérprete PostScript (memoria), etc.

Veamos un ejemplo. Un error común, sobre todo al escribir nosotros mismos instrucciones PostScript, es olvidarnos algún operando. Si escribimos

4 2 mul add

la operación mul deja un 8 en la pila, pero add sólo encuentra este operando y ningún otro, por lo cual no puede calcular suma alguna. El intérprete informa del error así:

%%[ Error: stackunderflow; OffendingCommand: add ]%%
Stack:
8
%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%

El mensaje de error nos informa tres cosas:

  1. Una descripción del error a través de un código de error PostScript. En este caso stackunderflow (literalmente: pila agotada) nos dice que en algún momento el intérprete no encontró los operandos suficientes;
  2. El comando cuya ejecución produjo el error (OffendingCommand). Aquí el error se produce al ejecutar add;
  3. El estado de la pila al producirse el error. El intérprete indica, a continuación de la palabra Stack, los operandos presentes en la pila en ese momento, empezando por el superior.

Una última línea nos recuerda, tal como anticipamos, que el resto del archivo será ignorado.

Cuando el código fue creado por nosotros, toda esta información nos permite rastrear y corregir el error, pero no podemos pensar en utilizarla para corregir código creado automáticamente por un driver. Sin embargo, ciertos errores están asociados a un tipo particular de elemento, y eso en última instancia permite apuntar a posibles causas. Por ejemplo, errores relativos a fuentes faltantes nos dicen claramente dónde buscar el problema, mientras que errores de interpretación de imágenes nos dirige la búsqueda hacia alguna foto dañada.

En este cuadro se presentan algunos errores PostScript[1]:

Error PostScript Significado
invalidfont Se ha especificado una fuente no existente o no válida. Por lo general el OffendingCommand es findfont.
limitcheck Se ha superado un límite interno de implementación; por ejemplo un trazado se ha vuelto más complejo que lo que el intérprete puede manejar con los recursos actuales.
nocurrentpoint Se ha intentado ejecutar un operador que necesita un punto actual, pero éste no está definido.
stackoverflow La pila ha crecido más allá de lo que el intérprete puede manejar con los recursos actuales.
stackunderflow La pila ha quedado agotada cuando se le solicitaban operandos.
syntaxerror El intérprete ha encontrado uno o más caracteres que no son válidos según la sintaxis de PostScript, por ejemplo paréntesis no balanceados.
typecheck Una operación encontró en la pila operandos que no son del tipo esperado, por ejemplo texto en lugar de números.
undefined Se ha invocado un procedimiento que no ha sido definido aún mediante def.
VMerror Se ha producido un error interno en el manejo de la memoria por parte del intérprete.

Naturalmente, este es sólo un listado de ejemplo. Adobe presenta en su sitio una descripción de errores y problemas frecuentes, junto con indicaciones de cómo lograr que un driver PostScript informe los errores cuando éstos no aparecen en pantalla ni en el trabajo impreso.

§3.6 – Tecnología del procesamiento PostScript >

1 La lista de todos los errores posibles junto a su descripción puede encontrarse en el PostScript Reference Manual ya citado.