Comenzando con la posdata

Descripción general de PostScript

PostScript es un lenguaje de programación general completo de Turing, diseñado y desarrollado por Adobe Systems. Muchas de las ideas que florecieron en PostScript se cultivaron en proyectos para Xerox y Evans & Sutherland.

Históricamente, su principal aplicación en el mundo real es como un lenguaje de descripción de página, o en su formato EPS de una sola página, un lenguaje de descripción de imágenes de gráficos vectoriales. Está tipado dinámicamente, con ámbito dinámico y basado en pilas, lo que conduce a una sintaxis mayoritariamente polaca inversa.

Hay tres versiones principales de PostScript.

  1. Nivel 1 de PostScript: se lanzó al mercado en 1984 como el sistema operativo residente de la impresora láser Apple LaserWriter, inaugurando la era de la autoedición.
  2. Nivel PostScript 2: lanzado en 1991, contenía varias mejoras importantes en el Nivel 1, incluida la compatibilidad con la descompresión de imágenes, la separación en RIP, los diccionarios de crecimiento automático, la recolección de elementos no utilizados, los recursos con nombre, las codificaciones binarias del propio flujo del programa PostScript.
  3. PostScript 3: la versión más reciente y quizás la más adoptada se lanzó en 1997. También contiene varias mejoras de importación sobre el Nivel 2, como Smooth Shading. El término “nivel” ha sido rechazado.

Aunque PostScript se usa normalmente como un lenguaje de descripción de página y, por lo tanto, se implementa dentro de muchas impresoras para generar imágenes rasterizadas, también se puede usar para otros fines. Como una calculadora rápida de pulido inverso con nombres de operadores más fáciles de recordar que bc. Como un formato de salida generado por otro programa (generalmente en algún otro idioma).

Aunque los archivos PostScript suelen ser ASCII limpios de 7 bits, existen varios tipos de codificación binaria descritos en el estándar de nivel 2. Y al ser programable, un programa puede implementar su propio esquema de codificación arbitrariamente complejo. Existe un Concurso Internacional de Posdata Ofuscada, algo menos activo que el C.

Referencias en línea

  • Páginas de índice de la documentación de Adobe: https://www.adobe.com/products/postscript/resources.html http://www.adobe.com/devnet/postscript.html http://www.adobe.com/devnet/font.html

  • Manual de referencia del lenguaje PostScript, 3ed - El estándar PostScript 3. (7,41 MB pdf) (Suplemento, Errata)

  • Manual de referencia del lenguaje PostScript, 2ed - El estándar de nivel 2 de PostScript. (incluye documentación de Display PostScript). (3.29MB pdf)

  • Tutorial y libro de recetas de Postscript - El libro azul. (847KBpdf)

  • Diseño del programa de lenguaje Postscript - El libro verde. (911KB pdf)

  • Pensando en Postscript - Por el autor del libro verde y el tutorial del libro azul. (826KBpdf)

  • [Especificación de convenciones de estructuración de documentos del lenguaje PostScript 3.0] (http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/postscript/pdfs/5001.DSC_Spec.pdf) (521KB pdf)

  • [Formato de fuente Adobe Tipo 1] (http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/T1_SPEC.pdf) (444KBpdf)

  • [Especificación de formato de archivo PostScript encapsulado 3.0] (http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/postscript/pdfs/5002.EPSF_Spec.pdf) (185KB pdf)

  • [Especificación de formato de archivo de descripción de impresora PostScript 4.3] (http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/postscript/pdfs/5003.PPD_Spec_v4.3.pdf) (186KBpdf) (Actualización)

  • Solucionar errores de PostScript: sugerencias de depuración. (158KB html)

  • Acumen Journal - Archivo de artículos de programación Postscript y PDF. (directorio html de archivos pdf comprimidos)

  • [Ilustraciones matemáticas: un manual de geometría y posdata] (http://www.math.ubc.ca/~cass/graphics/manual/) - por Bill Casselman. (directorio html de capítulos pdf y descargas de código)

  • Subproceso con muchas implementaciones de algoritmos de clasificación (archivo de Usenet)

  • [Páginas de gurú] de Don Lancaster (http://www.tinaja.com/)

  • [Uso directo del lenguaje Postscript] de Anastigmatix (http://www.anastigmatix.net/postscript/direct.html)

  • Paso a paso de código abierto [Depurador para código Postscript] (https://github.com/luser-dr00g/debug.ps)

Preguntas frecuentes

  • [Preguntas frecuentes de Usenet (alrededor de 1995)] (ftp://ftp.cs.brown.edu/pub/comp.lang.postscript/FAQ.txt)

  • [Preguntas frecuentes sobre PostScript de Wikilibros] (http://en.wikibooks.org/wiki/PostScript_FAQ)

  • [Preguntas de SO PostScript ordenadas por las vistas más frecuentes] (http://stackoverflow.com/questions/tagged/postscript?sort=frequent)

Libros

  • Manual de referencia del lenguaje Postscript, 1 ed., 1985. Recomendado por su pequeño tamaño y fácil índice de operador de las páginas de resumen (falta en ediciones posteriores).

  • Posdata del mundo real. Capítulos de varios autores sobre diversos temas, incluida una excelente cobertura de medios tonos.

Ejemplo de Hola Mundo

Seleccione una fuente y un tamaño de fuente, seleccione la ubicación, mostrar cadena.

%!PS
/Palatino-Roman 20 selectfont
300 400 moveto
(Hello, World!) show
showpage

Notas y errores comunes:

  • No se pudo establecer una fuente (lo que da como resultado que no haya texto o una fuente predeterminada (fea))

  • Usando findfont y setfont pero olvidando scalefont en el medio. El uso de selectfont de nivel 2 evita este problema y es más conciso.

  • No establecer un punto con moveto, o establecer el punto fuera de la página. Para papel carta de EE. UU., 8,5x11 es 792x612 puntos ps. Por lo tanto, es fácil recordar aproximadamente 800x600 (pero un poco más corto y más ancho). Entonces 300 400 es aproximadamente el centro de la página (un poco alto, un poco a la izquierda).

  • Olvidar llamar a showpage. Si obtiene una vista previa de un programa ps con gs y no termina en showpage, gs puede mostrarle una imagen. Y, sin embargo, el archivo fallará misteriosamente en producir cualquier resultado cuando intente convertirlo a pdf o cualquier otra cosa.

Plan de estudios

Lea la documentación en este orden para aprender fácilmente la posdata:

  1. Excelente tutorial de Paul Bourke: http://paulbourke.net/dataformats/postscript/

  2. Libro Azul, primera mitad, el tutorial oficial original: http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF

  3. Green Book, cómo usar la posdata de manera efectiva: http://www-cdf.fnal.gov/offline/PostScript/GREENBK.PDF

  4. Pensando en Postscript, ’nuff dijo: http://wwwcdf.pd.infn.it/localdoc/tips.pdf

  5. Ilustraciones matemáticas. Comience pequeño, construya grande. Las matemáticas detrás de Bezier Curves. El recorte del polígono de Hodgman-Sutherland algoritmo. Transformaciones afines y transformaciones no lineales del camino. Dibujo 3D y sombreado Gouraud. Del prefacio:

Cuál [de las muchas herramientas para ayudar a producir gráficos matemáticos] elegir aparentemente implica un equilibrio entre la simplicidad y la calidad, en el que la mayoría opta por lo que perciben como simplicidad. La verdad es que la compensación es innecesaria: una vez que uno ha hecho una pequeña inversión inicial de esfuerzo, lo mejor que se puede hacer en la mayoría de las situaciones es escribir un programa en el lenguaje de programación de gráficos PostScript. Prácticamente no hay límite para la calidad de la salida de un programa PostScript y, a medida que uno adquiere experiencia, las dificultades de usar el lenguaje disminuyen rápidamente. La aparente complejidad involucrada en la producción de figuras simples mediante la programación en PostScript, como espero que este libro demuestre, es en gran medida una ilusión. Y la cantidad de trabajo involucrada en la producción de figuras más complicadas por lo general no será ni mayor ni menor que la necesaria.

Instalación o configuración

Los intérpretes auténticos de Adobe PostScript están disponibles en impresoras de gama alta, el producto Display PostScript (DPS) y el producto Acrobat Distiller. Como autores del estándar, estos productos se consideran “la implementación estándar” con el fin de describir las diferencias entre las implementaciones de PostScript.

La interfaz estándar para el intérprete definida en el PLRM es el * flujo de programa * que puede ser de texto o binario según los detalles del canal subyacente o del sistema operativo/controlador. Acrobat Distiller tiene una interfaz gráfica de usuario para seleccionar el programa postscript de entrada y representar su salida como un pdf. Distiller también tiene un soporte limitado para usar el flujo de texto de salida para informar errores y otras salidas del programa. GSView proporciona una interfaz gráfica de usuario similar para un flujo de trabajo similar utilizando Ghostscript como intérprete.

Ghostscript y Xpost funcionan en modo de línea de comandos. El archivo del programa postscript que se ejecutará se puede mencionar en la línea de comandos (gs program.ps o xpost program.ps), que abrirá una ventana gráfica para mostrar la salida gráfica. Las opciones se pueden usar para representar los gráficos en otro lugar, como un archivo de disco, o suprimir los gráficos por completo y usar postscript como un lenguaje de secuencias de comandos de texto.

Cada uno de los diversos intérpretes tiene sus propias instrucciones de instalación y configuración y sería un desperdicio (y propenso a quedar desactualizado) reproducirlas aquí.

Intérpretes de PostScript disponibles gratuitamente

  • Ghostscript está disponible para todas las principales plataformas y distribuciones de Linux, en formato fuente o binario, bajo la licencia GNU o bajo otros acuerdos de licencia con los autores, [software Artifex](http: //ghostscript.com/Artifex_Software_Inc.html). Ghostscript implementa el estándar PostScript 3 completo.

  • Xpost está disponible en forma de fuente para todas las plataformas principales, bajo la licencia BSD-3-clause. Implementa el estándar de nivel 1 con algunas extensiones de nivel 2 y algunas extensiones de DPS.

Espacios de nombres locales para funciones

Postscript es un lenguaje de espacios de nombres dinámicos o LISP 1. Pero proporciona las herramientas para implementar variables locales en procedimientos y otros efectos necesarios para implementar algoritmos.

Para los nombres locales en un procedimiento, cree un nuevo diccionario al principio y extráigalo al final.

/myproc {
    10 dict begin
    %... useful code ...
    end
 } def

También puede combinar esto muy bien con un atajo para definir los argumentos de la función como variables.

% a b c  myproc  result
/myproc {
    10 dict begin
    {/c /b /a} {exch def} forall
    %... useful code yielding result ...
    end
 } def

Si necesita actualizar una variable *“global” * mientras el diccionario local está en la parte superior, use store en lugar de def.