Вопросы и ответы по программам Adobe

         

MAC OS/ WINDOWS/ UNIX Сообщения об ошибках PostScript



MAC OS/ WINDOWS/ UNIX

Сообщения об ошибках PostScript

Иногда печать PostScript-файла прерывается из-за какой-нибудь ошибки, причем ошибки могут носить разный характер и с трудом поддаются диагностике. Однако, благодаря элементарному знакомству с языком PostScript и средой, в которой он функционирует, неприятные последствия можно свести до минимума или даже устранить их вовсе. В этом разделе описаны ошибки PostScript, дано им объяснение и показаны пути исправления.

ЧТО ТАКОЕ ОШИБКА POSTSCRIPT?

При печати страницы на настольном принтере или растровом процессоре RTP, поддерживающим язык PostScript, тот создает электронный файл, где страница отображается при помощи PostScript-кода. Точнее, принтер или RIP включает программу, так называемый интерпретатор PostScript, которая исполняет PostScript-файл и создает второе представление страницы (нередко называемое растровым изображением), понятное механизму принтера. Затем механизм печатает растровое изображение на бумаге или пленке.

Когда интерпретатор составляет PostScript-файл и все протекает нормально, принтер печатает соответствующую страницу или страницы. Если же с PostScript-кодом что-то не в порядке, интерпретатор воспринимает это как ошибку PostScript и вводит в действие особый код — обработчик ошибок для того, чтобы отметить данную ошибку. Обработчик записывает информацию об ошибке в память RIP и подает команду остановить обработку файла.

PostScript-код файла может проигнорировать эту команду, и тогда интерпретатор продолжит обработку. Например, запрос файла на дуплексную (двухстороннюю) печать скорее всего вызовет ошибку, если будет направлен принтеру, который может печатать только на одной стороне листа. В этом случае встроенный обработчик ошибок дает команду прекратить выполнение задания. Однако, PostScript-файл может проигнорировать ее, равно как и запрос на дуплексную печать. Работа продолжится, правда, при этом печать будет выполняться только на одной стороне листа. Если же PostScript-код не проигнорирует команду остановиться, интерпретатор обратится к информации, записанной перед этим обработчиком ошибок, и появится такое сообщение:

%%[ Error: <имя ошибки>; OffendingCommand: <имя команды> ] %%



%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%

В первой строке выводится имя ошибки, а также имя PostScript-команды, вызвавшей эту ошибку. Вторая строка сообщает о том, что остальная часть задания выполнена не будет. (Данное сообщение об ошибке может Вам очень пригодиться, хотя увидеть его не всегда удается. Информацию о том, как отыскивать сообщения об ошибках,) Вы найдете в разделе «Вывод сообщений об ошибках». Вместе с этим интерпретатор прекращает исполнение файла.

RIP может генерировать другие сообщения, похожие на приведенное выше. Если сообщения имеют такой же формат, но не содержат слов Error и OffendingCommand, то скорее всего это не ошибки PostScript. Например, можно увидеть такое сообщение с меткой PostScript:

%%[ PrinterError: Media jam ]%%

Это не ошибка в PostScript-файле, обнаруженная интерпретатором, а проблема иного рода, и обнаружена другой частью системы, в данном случае механизмом принтера.

ЧТО ОЗНАЧАЮТ СООБЩЕНИЯ ОБ ОШИБКАХ

 Чтобы исправить ошибку PostScript, следует что-то предпринять, но для этого нужно понимать смысл выводимых сообщений:

%%[ Error: limitcheck; OffendingCoiranand:

sethalftone ]%%

Например, увидев такое сообщение, Вы догадаетесь, что когда в файле выполнялась команда sethalftone, произошла ошибка, которая называется limitcheck, но не найдете никаких указаний на ее причину. Иногда подсказкой может послужить название самой ошибки или команды. В данном случае ошибку вызвал какой-то лимит, который оказался исчерпанным при попытке установки полутонового растра.

Познакомившись с типами команд и ошибок языка PostScript, Вы научитесь приходить к более определенным выводам. Официальной спецификацией языка PostScript является руководство «PostScript Eanguage Reference Manual» (второе издание). Там приводится описание всех стандартных команд и ошибок, которые встречаются в языке PostScript Eevel 2. Стандартные команды называются операторами. В разделе 8.1, «Operator Summary», собраны все операторы, сгруппированные по 24 категориям. Там содержится также краткий обзор 30 возможных ошибок PostScript.

Анализируя сообщение об ошибке, обратите внимание на вызвавшую сбой команду (OffendmgCommand), это позволит определить, какой оператор не сработал. Прежде всего взгляните на имя ошибки. В обоих случаях держите под рукой Раздел 8.1. Само по себе только имя ошибки без сбойной команды бессмысленно. Например, ошибка limitchek означает, что в структуре RIP был превышен некий лимит. Это ни о чем не говорит. Что за лимит, или хотя бы к чему он относится? Сбойная команда

Выражение OffendmgCommand показывает, какой именно PostScript-оператор дал сбой. Все операторы можно разделить на две группы: влияющие на внешний вид страницы и не влияющие. Операторы первой группы влияют, в частности, на объекты трех типов, поддерживаемые языком PostScript, — текст, графика (здесь и далее под этим подразумевается векторная графика) и изображения (растровые картинки, созданные на компьютере или оцифрованные путем сканирования). Различие между этими группами весьма существенно: чтобы исправить ошибки, вызванные операторами первой группы, достаточно модифицировать документ в программе, где он был создан. Операторы второй группы используются при программировании PostScript-файла, и, чтобы понимать их и устранять возникающие проблемы, требуется серьезный опыт работы с языком PostScript.

Операторы первой группы, в свою очередь, могут быть разбиты на категории (см. табл. 1), как указано в Разделе 8.1 руководства «PostScript Language Reference Manual». Категории эти следующие: Graphics State, Device-Independent (состояние графики, аппаратно-независимые); Graphics State, Device-Dependent (состояние графики, аппаратно-зависи-мые); Path Construction (построение контуров); Painting (закрашивание); Form and Pattern (формы и орнамент); Device Setup (настройка устройства); Character and Font (символы и шрифты). Эти семь категорий насчитывают довольно много операторов, но следует иметь в виду, что одни из них используются чаще, другие реже. Например, оператор рисования fill встречается весьма часто, поскольку применяется для закрашивания графики, а специфичный оператор ueofill — редко.

Увидев в выражении OffendingCommand имя оператора, найдите в Разделе 8.1 руководства его категорию. Это поможет определить тип операции, вызвавшей ошибку. Например, оператор show относится к категории Character and Font, поэтому, если Вы увидите ошибку, где сбойная команда представлена оператором show, можно подозревать, что проблема связана с текстом PostScript-файла. Табл. 1 содержит перечень категорий операторов, их краткое описание и общие примеры.

В сообщениях об ошибках можно увидеть некоторые команды, отсутствующие в руководстве «PostScript Language Reference Manual», поскольку они не являются стандартными. Такая ситуация более типична для продуктов, поддерживающих только вариант Level 1 языка PostScript, чем для тех, которые работают и с Level 2 (см. «PostScript Level 2», с. 104). Имя ошибки

Определив в сообщении сбойную команду, обратите внимание на имя ошибки. Наиболее распространенные ошибки и их краткое описание приведены в табл. 2, там же даются примеры сбойных команд, общие проблемы и методы решения той или иной комбинации «ошибка — сбойная команда». Некоторые из примеров представляют собой программные ошибки, анализ и исправление которых требует специальных приемов отладки и знания языка PostScript. В таких случаях за помощью следует обращаться к специалисту или производителю своего программного обеспечения и R1P.



Содержание раздела