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.
ТАБЛИЦА 1: ОПЕРАТОРЫ POSTSCRIPT | |||
КАТЕГОРИЯ ОПЕРАТОРОВ | ОПИСАНИЕ КАТЕГОРИИ | ПРИМЕР ОПЕРАТОРА | ОПИСАНИЕ ОПЕРАТОРА |
Graphics State, Device-Independent (состояние графики, аппаратно- независимые) | Управляет прорисовкой объектов, на выводных устройствах разных типов результаты должны быть идентичными. | setcolor setlinewidth | Задает цвет объекта. Задает ширину линий объекта. |
Graphics State, Device-Dependent (состояние графики, аппаратно- независимые) | Управляет прорисовкой объектов, на выводных устройствах разных типов результаты обычно | sethalftone set flat | Устанавливает запрошенный полутоновой растр. |
Path Construction (построение контуров) | Используется для создания графики, такой как полигоны кривые. | lineto curve to arc | Вычерчивает линию. Вычерчивает кривую. Вычерчивает дугу или кр\т. |
Painting (закрашивание) | Используется для закрашивания графики и изображений | stroke fill image | Закрашивает обводную линию. Закрашивает внутреннюю часть графики. Закрашивает изображения. |
Form and Pattern (формы иорнамент) | Применяется для генерирования повторяющихся форм и орнамента. | setpattern execform | Вычерчивает форму. |
Device Setup (настройка устройства) | Используется для настройки атрибутов принтера. | setpagedevice | Устанавливает запрошенные функции устройства. |
Character and Font (символы и шрифты) | Используется для манипуляции со шрифтами и символами. | findfont show | : Отыскивает и загружает запрошенный шрифт. Закрашивает символ или группу символов. |
ТАБЛИЦА 2: СООБЩЕНИЯ ОБ ОШИБКАХ POSTSCRIPT | |||
ИМЯ ОШИБКИ | ОПИСАНИЕ | СБОЙНАЯ КОМАНДА | ОБЩИЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ |
<имя шрифта> not found, using Courier. | Запрошенный шрифт не подан RIP или не включен в PostScript-файл (Формат [этого сообщения иной но сравнению с другими: он не имеет сбойной команды). | Не используется. | Загрузите отсутствующий шрифт в RIP, включите его в документ или выберите другой шрифт. |
configurationerror | Запрошенная функция не может быть задана; часто сопровождается дополнительным полем ErrorInfo с указанием запрошенной функции. | setpagedevice | Не запрашивайте у драйвера этой функции; воспользуйтесь другим принтерным файлом или сконфигурируйте RIP так, чтобы он поддерживал эту функцию. |
dictfull | В структуpax данных PostScript, называемых словарями, больше не осталось места; эта проблема более характерна для PostScript Level 1, чем для Level 2. | store, put , def | Эти операторы хранят объекты в словарях; ошибка требует специальной отладки. |
invalidaccess | Была предпринята попытка поместить объект в структуру данных, предназначенную только для чтения. | store, put, def | Эти операторы хранят объекты в разных структуpax данных PostScript; ошибка требует специальной отладки. |
invalidfont | Была предпринята попытка установить в память RIP неправильно сделанный или неправильно лицензированный шрифт. | findfont, definefont, selectfont | Замените или установите на RIP и/иди компьютер другой шрифт. |
invalidrestore | Проблема с управлением памятью на программном уровне. | restore | Возможна проблема с драйвером принтера; требуется специальная отладка. |
ioerror | Когда RIP обрабатывал файл, возникла ошибка ввода/вывода; этот файл может представлять собой текущее задание или какой-либо другой, ссылка на который имеется в файле задания. | image , colorimage случайный набор символов | Представленные данные неправильны: просканируйте, отредактируйте или импортируйте изображение снова. Эти символы могут указывать на проблему коммуникации: переместите или замените линию связи, проверьте настройки коммуникации, отключите спулеры или запустите задание снова. |
limitcheck | При выполнении операции превышен некий лимит | show, fill, stroke , clip, другие операторы рисования image | Слишком сложная графика (при работе с PostScript Level 2 такое случается крайне редко): увеличьте величину спрямления (Flatness), разделите разрешение принтера. Внутреннее представление запрошенного полутонового растра слишком мало или слишком велико: проконсультируйтесь с производителем своего RIP. Изображение слишком велико, имеет слишком высокое разрешение или не может быть повернуто. Уменьшите размер или разрешение изображения, измените угол изображения или поверните его в программе редактирования графики. |
Вы обнаружите, что предлагаемые в табл. 2 решения не всегда способны исправить возникшую ошибку. Здесь дается лишь общее представление о том, что могут означать наиболее распространенные ошибки и какие они вообще бывают.
Более подробную информацию об операторах и ошибках Вы найдете в Разделе 8.2, «Operator Details» руководства «PostScript Language Reference Manual», в остальной его части описаны принципы работы операторов PostScript и устранения ошибок. Существует также ряд книг и пособий для практического освоения языка PostScript (см. «Рекомендуемая литература» и «Учебные курсы и семинары»).
ВЫВОД СООБЩЕНИЙ ОБ ОШИБКАХ НА ЭКРАН
Интерпретатор генерирует сообщение об ошибке, а то что может произойти дальше, зависит от используемого принтера или RIP. Сообщение, возможно, в ином формате, чем было описано выше, может быть записано где-нибудь в недрах RIP или направлено обратно компьютеру, который передал его RIP.
Если Ваш RIP не записывает сообщения или не может передавать их на компьютер, те пропадают. В таких случаях желательно пользоваться утилитами обработки ошибок. Они представляют собой PostScript-файлы, изменяющие способ обработки и отображения сообщений об ошибках, которым пользуется интерпретатор. Например, они могут печатать информацию об ошибках на RIP или записывать ее на диск RIP для последующего считывания. Некоторые из таких утилит предоставляют гораздо больше информации, чем просто сообщения об ошибках, но чтобы в ней разобраться, необходимо глубокое знание языка PostScript. По поводу утилит обработки ошибок, обратитесь к производителю своего RIP. Adobe Systems также предлагает простой обработчик ошибок, загрузить который можно по модему или Internet (см. «Доступ к файлам Adobe»).
ТАБЛИЦА 2: СООБЩЕНИЯ ОБ ОШИБКАХ POSTSCRIPT (ПРОДОЛЖЕНИЕ) | |||
ИМЯ ОШИБКИ | ОПИСАНИЕ | СБОЙНАЯ КОМАНДА | ОБЩИЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ |
rangecheck | Значение, присвоенное оператору, находится вне пределов допустимого диапазона. | setpapertray (Level 1) Несколько операторов | Запрошен несуществующий лоток для бумаги: запросите у драйвера принтера другой лоток. Требует специальной отладки. |
stackoverflow | Это программный сбой, связанный с заполнением внутренней структуры данных, называемой стеком операндов. | Несколько операторов | Может указывать на проблему принтерною драйвера или вмешательство со стороны какой-нибудь утилиты. Требует специальной отладки. |
stackunderflow | Оператор ожидал, что в стеке операндов будет одно или несколько значений, но там не оказалось ни одного. | Несколько операторов | Может указывать на проблему драйвера или вмешательство со стороны какой-нибудь утилиты. Требует специальной отладки. |
timeout | Лимит времени, отведенный на выполнение операции, исчерпан. | Несколько операторов | Установлен слишком низкий порог временной блокировки или есть проблема с коммуникацией. С помощью программы администрирования или принтерного драйвера установите на RIP другое значение для тайм-аута или воспользуйтесь другим драйвером. |
typecheck | Оператор ожидал найти в стеке операндов значение определенного типа, но ему был предложен не тот тип. | Несколько операторов Случайные символы или вообще никаких символов | Возможно, проблема с драйвером принтера или вмешательство со стороны какой-нибудь утилиты. Требует специальной отладки. Неполадки в коммуникации или в задании осталась часть данных: воспользуйтесь другой коммуникационной линией или другим принтерным драйвером. Возможно, Вы перенесли PostScript-файл на другую компьютерную платформу и загрузили с нового компьютера: попробуйте сохранить файл не в двоичном формате, а в ASCII или Text Only. |
undefined | Указанное в OffendmgCommand имя незнакомо растровому процессору (RIP). | md Несколько операторов Случайные символы | Это не оператор PostScript: означает, что и сохраненный на Macintosh PostScript-файл не был включен требуемый PostScript-код. Сохраните файл заново. Задание содержит нестандартный оператор, незнакомый растровому процессору: проверьте установки драйвера или выберите другой принтерный файл. Слишком много данных для изображения: просканируйте, отредактируйте или импортируйте изображение снова. |
VMerror | В ходе выполнения задания RIP вышел за пределы виртуальной памяти (VM) PostScript. | Несколько операторов | Перезагрузите RIP, чтобы очистить его память. При использовании PostScript Level 2 эта ошибка возникает очень редко. |
Даже если RIP способен возвращать сообщения об ошибках компьютеру, Вы все равно можете так и не увидеть их у себя на экране, или они мелькают так быстро, что прочесть их невозможно. Это значит, что драйвер принтера игнорирует возвращаемые с RIP сообщения или не пропускает их. (Среди таких драйверов — LaserWriter фирмы Apple Computer, PSCRIPT™ производства Microsoft, PSPrinter™ и ADOBEPS™ фирмы Adobe Systems соответственно для Macintosh и Windows).
Более того, обнаружив сообщение об ошибке, драйвер может представить его как лишенное всякой информативности, например, «-8133». Следует иметь в виду, что не все сообщения об ошибках означают ошибки PostScript. Например, сообщение «-4100» или «The job is OK, but can't be printed on the Macintosh» может указывать на проблему в коммуникационной линии, идущей от Macintosh к RIP.
В этом случае можно воспользоваться утилитой обработки ошибок, но это не всегда лучший выход. Так, если утилита дает RIP указание печатать сообщения об ошибках на бумаге или на пленке, то это может обернуться лишней тратой материала. Гораздо удобнее, когда сообщения выводятся на экран. Драйверы PSPrinter и LaserWriter 8.0 (производства соответственно Adobe Systems и Apple Computer) предлагают такую возможность.
Если у Вас их нет, существует еще один хороший метод: сохранить PostScript-файл на диске компьютера и с помощью загрузочной утилиты загрузить его в RIP. (Примерами таких утилит могут служить программы загрузки шрифтов, LaserTalk™ и SendPS™ производства Adobe Systems, производители RIP также могут предлагать загрузочные утилиты).
Обычно загрузочные утилиты после передачи файла либо выводят сообщения об ошибках на экран, либо записывают возвращаемую из RIP информацию в «регистрационный файл» на диске компьютера. Если Ваша утилита обработки ошибок вместе с сообщениями предлагает дополнительную информацию RIP и не выводит ее на носитель, установите ее и загрузите сохраненный PostScript-файл. Это позволит увидеть более полную информацию.
Чтобы выбрать предпочтительный метод отображения полных сообщений об ошибках, проделайте следующие действия:
1. Если RIP может записывать или выводить на экран сообщения об ошибках, обратитесь к документации RIP, которая поможет Вам прочесть их. Если нет, переходите к п. 2.
2. Если RIP не может передавать сообщения на компьютер, воспользуйтесь утилитой обработки ошибок. Если может, переходите к п. 3.
3. Если во время печати Вы видите полные сообщения об ошибках, очень хорошо. Если нет, переходите к п. 4.
4. Если драйвер Вашего принтера имеет возможность выводить на экран сообщения об ошибках по ходу печати, воспользуйтесь ею. Если нет, переходите к п. 5.
5. Если драйвер Вашего принтера имеет возможность сохранять PostScript-файл, сохраните его, а затем с помощью утилиты загрузки передайте его на RIP.
6. Наконец, попробуйте пропустить PostScript-файл через Adobe Acrobat Distiller. Если Distiller обнаружит ту же ошибку, Вы сможете увидеть, что же это за ошибка.
Если не срабатывает ни один из этих способов, потребуются более сложные процедуры. Обратитесь за помощью к специалисту или к производителю своего RIP.
ПРИЧИНЫ ОШИБОК POSTSCRIPT
Чтобы исправить ошибку PostScript, нужно знать, где именно она возникла. Печать документа — довольно сложный процесс, который к тому же в разных условиях может быть немного разным, но все же существует некая общая последовательность операций. Если Вы четко их себе представляете, установить причину ошибки будет легче. Далее описаны все стадии процесса печати, наиболее часто встречающиеся ошибки и способы их исправления.
1. Электронный документ составляется в той или иной программе. Для представления его на мониторе каждая программа использует свой собственный графический язык. Документ может включать файлы, импортированные из других программ. Если в таком файле оказывается проблемный объект или ошибка, то или удалите, или модифицируйте этот объект, или импортируйте файл заново.
2. Чтобы напечатать документ, Вы в качестве пункта назначения выбираете растровый процессор (RIP) и задаете нужные параметры печати — размер бумаги, разрешение, спрямление (flatness) и др. Если Вы задали установки, не подходящие для данного RIP, задайте другие.
3. Затем драйвер принтера преобразует документ в PostScript-файл, то есть транслирует образ документа с графического языка программы на язык PostScript. Если созданный драйвером PostScript-код оказывается неверным, трансляция вызывает ошибку. Попробуйте воспользоваться другим драйвером или модифицировать документ в программе, где он был создан.
4. Драйверы некоторых принтеров вставляют в PostScript-код дополнительную информацию о шрифтах, изображениях и другие необходимые для документа ресурсы. Такая информация может форматироваться в соответствии со спецификацией OPI (Open Prepress Interface) или спецификацией DSC (Document Structuring Convention), описанной в руководстве «PostScript Language Reference Manual». Если в дополнительной информации есть ошибка, то позже, когда начнет работать подключенный к RIP спулер, с PostScript-кодом может возникнуть проблема. Попробуйте воспользоваться другим драйвером, заменив при этом шрифт или изменив структуру документа (для этого достаточно удалить или переместить некоторые страницы).
5. Драйвер принтера может вставлять в файл дополнительный PostScript-код, который требует наличия у растрового процессора определенных функциональных особенностей. Некоторые драйверы берут этот код из принтерных файлов, таких как PPD (PostScript Printer Description) производства Adobe Systems. Они содержат код, предназначенный для работы только с конкретным устройством, что делает ненужным включение этого кода в драйвер. Если Вы (или драйвер) выбрали для RIP не тот принтерный файл, вернитесь и выберите нужный. Если информация в принтерном файле оказывается неверной, обратитесь к производителю своего RIP или попробуйте воспользоваться принтерным файлом для близкой модели RIP.
6. Обычно PostScript-файл передается на RIP драйвером принтера. Если при передаче файла возникает проблема, связанная либо с физическим соединением, либо с программой пересылающей файл, попробуйте другой способ передачи. Например, воспользуйтесь другим кабелем с другим типом коммуникации или попробуйте другой драйвер, загрузчик, другую программу передачи.
7. Если в сети работает спулер или OPI-сервер или они являются частью RIP, то спулер или OPI-сервер вмешивается в работу файла. (Спулер — это программа, координирующая поступление файлов на RIP). Некоторые спулеры или серверы перед передачей файла PostScript-интерпретатору растрового процессора модифицируют файл в соответствии с содержащейся в нем информацией DSC или OPI. Если информация DSC или OPI неправильная или спулер обрабатывает ее некорректно, возникает ошибка. При возможности отключите спулер или проверьте, чтобы на RIP присутствовали нужные файлу ресурсы.
8. Наконец, интерпретатор исполняет файл — именно на этом этапе обнаруживаются ошибки. Проблемы с самим интерпретатором менее вероятны, чем возникновение ошибок на предыдущих этапах. Некоторые утилиты, например, для калибровки цвета, вносят в работу интерпретатора небольшие изменения, что может повлиять на корректность его операций. Если с интерпретатором возникают проблемы или если происходит вмешательство какой-нибудь утилиты, попробуйте либо воспользоваться другим RIP, либо перезапустите RIP без специализированных утилит. В крайнем случае обратитесь за помощью к производителю RIP.
Если ничего не помогает, можете попробовать последний способ: сохраните PostScript-файл, модифицируйте его и загрузите на RIP. Правда, это требует глубоких знаний языка PostScript и DSC. Или обратитесь за помощью к производителю RIP.
ОПРЕДЕЛЕНИЕ ПРИЧИНЫ ОШИБКИ
Во всех предлагаемых решениях общим является замена, удаление или изменение того или иного элемента процесса — драйвера, принтерного файла, спулера. Лучший способ выявить причину ошибки — это изолировать ее, последовательно изменяя элементы и проверяя, остается после этого ошибка или нет. Если после очередного изменения проблема исчезает, значит Вы обнаружили ее причину и нашли решение, иначе продолжайте поиск.
На первом месте стоит замена драйвера, так как он участвует на нескольких стадиях процесса печати. Другой драйвер передает тому же документу другой PostScript-код. (Некоторые программы, такие как Adobe Photoshop, Adobe Illustrator и QuarkXPress генерируют свой собственный PostScript-код, поэтому замена драйвера здесь может не помочь). Если ошибка остается, попробуйте сделать еще что-нибудь, например, модифицировать файл в программе, где он был создан, или изменить способ передачи файла на RIP.
Изменяя файл в программе, можете использовать тот же систематический метод замены, удаления или модификации страниц или объектов на странице. И здесь сообщение об ошибке может подсказать, какие объекты следует изменить.
Способ передачи файла на RIP можно изменять по-разному. Можете попробовать другие физические соединения, например, LocalTalk® или EtherTalk® (компании Apple Computer), последовательный или параллельный кабели. Можно с помощью принтерного драйвера сохранить PostScript-файл и через утилиту загрузки передать его на RIP отдельно. Если ошибка исчезает, значит она была связана с передачей файла драйвером.
Правда, сохранение PostScript-файла с помощью драйвера может вызвать другие проблемы. Драйвер вставляет в файл аппаратно-зависимый код, который может оказаться неподходящим для передачи файла на RIP другого типа. В этом случае либо файл окажется неработоспособным, либо Вы не получите запрошенных функций печати. Кроме того, если передавать сохраненный PostScript-файл с Windows или DOS-машины на Macintosh, в нем могут оказаться непечатаемые символы (называемые также двоичными), что при загрузке файла на RIP вызовет ошибку «undefined error». Двоичные символы гораздо труднее поддаются передаче с одной компьютерной платформы на другую. Поэтому текст лучше всего сохранять не в двоичном (binary) формате, а в ASCII.
Другой способ передачи PostScript-файла предполагает сохранение его на встроенном диске RIP, если таковой имеется, и запуск уже оттуда. Это похоже на загрузку и хранение на диске RIP шрифта. Запуск файла с диска RIP устраняет необходимость передачи его для печати, благодаря чему из печатного процесса выпадает этап коммуникации. (Следует, однако, иметь в виду, что если файл содержал двоичные символы, а, сохраняя на диске RIP, Вы воспользовались последовательным или параллельным соединением, то эти символы могут оказаться утерянными).
Некоторые загрузочные утилиты позволяют сохранять PostScript-файл на диске RIP. Если у Вас нет такой утилиты, воспользуйтесь текстовым редактором (в формате ASCII) и добавьте в начало PostScript-файла следующий код:
%!
/rf currentfile def
/wf (myfile.ps) (w) file def
/str 65535 string def
//rf //str readstring
//wf 3-1 roll writestring
not bexitd if
> bind loop
Вместо myfile.ps можете вставить другое имя, только оставьте скобки. Лучше всего использовать какое-нибудь простое название с буквенно-цифровыми символами и без пробелов. Затем с помощью загрузочной утилиты передайте этот файл на RIP. Если все нормально, PostScript-файл будет сохранен на диске RIP. После этого создайте в текстовом редакторе еще один PostScript-файл вот с таким простым кодом:
%!
(myfile.ps) run
Подставьте вместо myfile.ps имя файла, который Вы сохранили на диске RIP. Сохраните новый файл в формате ASCII и загрузите его на RIP. Файл myfile.ps будет исполнен. С помощью этого коротенького файла можете запускать файл myfile.ps сколько угодно. Если ошибка остается, значит ее причина не в коммуникации и не в способе передачи драйвером файла на RIP. Закончив тестирование на выявление источника ошибки, удалите файл myfile.ps. Для этого создайте и загрузите на RIP другой PostScript-файл с таким кодом:
%'
(myfile.ps) deletefile
Для выполнения этих операций с PostScript-файлами производитель Вашего RIP может предлагать свои утилиты или методы. Так, некоторые программные RIP для рабочих станций позволяют сохранять PostScript-файл в файловой системе рабочей станции, и он будет исполняться растровым процессором.
Системный метод может занять много времени, так как процесс печати включает много этапов и элементов. Не забывайте, однако, что сообщение об ошибке PostScript нередко содержит подсказку относительно того, какая операция оказалась невыполненной и как это произошло. Например, сообщение ioerror, где вместо имени оператора и сбойной команды выводится случайный набор символов, дает повод подозревать неполадки в коммуникации с RIP. Если же сообщение ioerror сопровождается именем оператора image (относящегося к сканированному изображению), значит, дело либо в коммуникации, либо в программе, с помощью которой было создано и сохранено сканированное изображение.
Со временем у Вас появится опыт и Вы научитесь определять ошибки PostScript интуитивно. Но даже и тогда не стоит пренебрегать основополагающими принципами. Это — знание процесса печати, умение заставить устройство выводить полные сообщения об ошибках, умение истолковать их смысл, системный подход к обнаружению вероятного источника ошибки.
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
Braswell Frank. Inside PostScript. Berkeley, Calif.:
Peachpit Press, 1989. Fink Peter. PostScript Screening: Adobe Accurate
Screens. Mountain View, Calif.: Adobe Press/
MacMillan Computer Publishing, 1992. Glover Gary. Running PostScript from MS-DOS. Blue
Ridge, Pa.: Windcrest Books, 1989. McGilton Henry, and Campione Mary. PostScript by
Example. Reading, Mass.: Addison-Wesley, 1992. Adobe Systems Incorporated. «PostScript Language
Reference Manual». 2d ed. Reading, Mass.: Addison-Wesley, 1990. Reid Glenn. Thinking in PostScript. Reading, Mass.:
Addison-Wesley, 1990. Roth Stephen. Real World PostScript. Reading, Mass.:
Addison-Wesley, 1988. Smith Ross. Learning PostScript: A Visual Approach.
Berkeley, Calif.: Peachpit Press, 1990.
КУРСЫ ОБУЧЕНИЯ И СЕМИНАРЫ
PostScript Language Training, Levels 1 and 2 Acquired
Knowledge 619-587-4668 PostScript Concepts Seminar Systems of Merritt 205-660-1240
Редактирование PPD-файла
PPD-файл (PostScript Printer Description) — принтерный файл в текстовом формате ASCII производства компании Adobe Systems или фирм, выпускающих продукт под ее маркой (OEM), — описывает заводские характеристики и особенности конкретной модели печатающего PostScript-устройства. Такие программы как Adobe Separator и PageMaker, а также драйверы принтеров Adobe Systems и Apple Computer используют PPD-файлы, распространяемые производителями программного обеспечения или OEM-фирмами. PPD-фай-льт позволяют выбирать установки для различных функций, например, задавать размер бумаги, способ ее подачи, устанавливать полутоновой растр и разрешение печатающего устройства. Иногда возникает потребность дополнить или модифицировать PPD-файл, чтобы приспособить принтер к определенным условиям печати. Этот раздел, посвященный в основном до-печатным операциям, рассматривает общие способы редактирования PPD-файлов.
Модификация принтерного файла требует знания формата PPD, а часто и языка PostScript. Ни Adobe Systems, ни OEM-фирмы не оказывают помощи в редактировании PPD-файлов, но Вы и сами с этим справитесь, если будете внимательны и аккуратны.
МЕТОДЫ РЕДАКТИРОВАНИЯ
Изменять PPD-файл можно двумя способами: редактированием в текстовом редакторе или путем создания и модификации отдельного файла (так называемого настроечного файла), содержащего ссылку на оригинальный. Скопируйте PPD-файл и редактируйте не оригинал, а копию. Для модификации и создания PPD-файла используется текстовый редактор, а файл сохраняется в формате Text Only или ASCII.
Чтобы создать настроечный файл, откройте в текстовом процессоре новый документ и введите следующую строку:
*Include: «filename»
Вместо filename подставьте имя оригинального PPD-файла (кавычки сохраните). Перед этой строкой вставьте те элементы PPD, которые считаете нужными: они заместят собой информацию в оригинальном файле. Эти элементы должны соответствовать спецификации PPD. Сохраните настроечный файл под именем, содержащим указание на характер изменений или на конкретное устройство, для которого были внесены эти изменения (например, MyPrntr.PPD). В имени должно присутствовать расширение PPD (регистр не важен), поскольку его требуют многие приложения и принтерные утилиты. Сохраните и оригинальный PPD-файл, и настроечный в одной папке.
По возможности вместо прямого редактирования PPD-файла используйте настроечный метод. Он обладает целым рядом преимуществ. Во-первых, с ним легче выявлять ошибки. Во-вторых, оригинальный файл остается без изменений. В-третьих, Вы можете создать каталог для настроечных файлов, что облегчит отслеживание будущих модификаций. Недостаток использования настроечных файлов состоит в том, что необходимо разбираться в характеристиках PPD-файлов и знать, какую именно информацию туда надо вносить.
Редактировать оригинальный файл можно только тогда, когда Вы хотите внести в него лишь небольшое число простых изменений. Во всех остальных случаях предпочтительно пользоваться настроечным файлом.
ПРИМЕНЕНИЕ
В этом разделе приводятся несколько примеров редактирования PPD-файла: Изменение установок полутонового растра Элементы ColorSepScreenAngle и ColorSepScreenFreq в оригинальном или настроечном файле соответствуют определенным углу полутонового растра и линиатуре для каждой триадной и нестандартной (custom) краски при определенном разрешении выводного устройства. Хотя в диалоговом окне программы, например, Adobe Separator, Вы можете выбрать линиатуру 132-lpi и разрешение 2540-dpi, среди фактических установок значения 132-lpi может не оказаться. Чтобы установить именно те линиатуру и угол, которые Вам нужны, проделайте следующие действия:
1. Найдите в PPD-файле элементы ColorSepScreen-Angle и ColorSepScreenFreq (они обычно находятся ближе к концу).
2. Найдите группу строк, где представлена комбинация линиатуры и разрешения (в lpi и dpi соответственно), которые Вы хотите модифицировать (в нашем примере 132/2540). Они могут выглядеть примерно так:
*% For 132 Ipi / 2540 dpi
*ColorSepScreenAngle
ProcessBlack.l321pi.2540dpi/132 Ipi / 2540 dpi: «45.0»
*ColorSepScreenAngle
CustomColor.l321pi.2540dpi/132 Ipi / 2540 dpi: «45.0»
*ColorSepScreenAngle
ProcessCyan.l321pi.2540dpi/132 Ipi / 2540 dpi: «18.4349»
*ColorSepScreenAngle
ProoessMagenta.l321pi.2540dpi/132 Ipi / 2540 dpi: «71.565»
*ColorSepScreenAngle
ProcessYellow.l321pi.2540dpi/132 Ipi / 2540 dpi: «0.0»
*ColorSepScreenFreq ProcessBlack.l321pi.2540dpi/132 Ipi / 2540 dpi:
«119.737»
«ColorSepScreenFreq Customeolor.l321pi.2540dpi/132 Ipi / 2540 dpi:
«119.737»
*ColorSepScreenFreq
ProcessCyan.l321pi.2540dpi/132 Ipi / 2540 dpi: «133.871»
*ColorSepScreenFreq
ProcessMagenta.l321pi.2540dpi/132 Ipi / 2540 dpi: «133.871»
*ColorSepScreenFreq
ProoessYellow.l321pi.2540dpi/132 Ipi / 2540 dpi: «127.0»
3. Измените значение в кавычках в конце каждой строки ColorSepScreenAngle. Это изменит угол наклона растра для создания полутонов. Числа должны содержать десятичные точки, поэтому после целого числа ставьте точку и 0. Например, 45 градусов должно выглядеть как «45.0» (кавычки обязательны). Если Вы работаете с настроечным файлом, скопируйте эти элементы, вставьте их в настроечный файл перед строкой Include и измените значения.
4. Измените значение в кавычках в конце каждой строки ColorSepScreenFreq. Это изменит линиатуру, которая используется для создания полутонов. Здесь также числа должны содержать десятичные точки, поэтому после целого числа ставьте точку и 0. Например, 127 градусов должно выглядеть как «127.0» (кавычки обязательны).
ИЗМЕНЕНИЕ НАИМЕНОВАНИЙ ПУНКТОВ МЕНЮ
Для описания пунктов меню в программах и драйверах используются трансляционные строки. Они преобразуют малопонятные элементы PPD-файла в легко узнаваемые названия и фразы, даже в языках программирования. Чтобы определить трансляционную строку в PPD-файле, найдите фразу, в начале которой стоит слэш (/), а в конце двоеточие (:). Термины в этих строках можно заменять более понятными названиями.
Например, многие принтерные файлы фотонаборных автоматов предлагают формат бумаги Letter Transverse — лист стандартного размера Letter, подаваемый в принтер поперек. Возможно, Вы захотите, чтобы в соответствующем диалоговом окне вместо пугающего Letter Transverse появлялось более понятное Long-edge-feed Letter. Для этого достаточно отредактировать PPD-файл.
PPD-файлы последних версий драйверов Adobe Systems и Apple Computer для отображения названий доступных форматов бумаги в соответствующих диалоговых окнах используют элемент *PageSize. Элемент в следующем примере дает драйверу указание выводить Letter Transverse, поскольку трансляционной строки здесь нет. (В PPD-файле такие элементы находятся вместе с другими элементами 'PageSize, а в настроечном файле — над строкой *^Include).
*PageSize Letter.Transverse: «PostScript
language code>»
Измените пункт меню, добавив следующую трансляционную строку:
«PageSize Letter.Transverse/Long-edge-feed
Letter: <«PostScript language code>»
Теперь, когда Вы воспользуетесь этим PPD-файлом, тот же формат бумаги в диалоговом окне будет называться Long-edge-feed Letter. Выражение в кавычках PostScript language code оставьте как есть.
ИЗМЕНЕНИЕ ИМЕНИ ПРИНТЕРА
Возможно, Вам захочется назвать PPD-файл не просто по имени принтера, а по функциям, которые тот представляет. Например, драйвер PSPrinter производства Adobe Systems способен отображать в окне Chooser на Macintosh любое другое имя для PPD-файла. Нужно лишь внести изменения в строку *NickName.
Найдите элемент *NickName, который обычно стоит в начале PPD-файла. Строка может выглядеть так:
*NickName: «ACME Color Printer 1000 V2013.114»
Можете заменить название принтерного файла на другое, более для Вас удобное: *NickName: «ACME Color Proofer»
Длина нового имени не должна превышать 31 символ. Если оно оказывается длиннее, добавьте: ShortNickName: <«название>»
Добавление шрифта в настроечный принтерный файл с помощью текстового редактора
Настроечные файлы позволяют добавлять в PPD-файлы дополнительную информацию (например, о резидентных шрифтах, формате бумаги, виртуальной памяти) под конкретный принтер.
Раздел External Font Information выбранного PPD-или настроечного файла показывает, какие шрифты установлены на диске принтера. По этому списку считывающие PPD-файлы программы определяют, какие шрифты нужно загрузить. Большинство PPD-файлов перечисляют только шрифты, помещенные в ПЗУ принтера. Возможности перечисления на принтере всех шрифтов зависят от характера Вашей работы и от того, сколько шрифтов постоянно находится на диске принтера. Помещать перечень шрифтов в оперативную память принтера (RAM) не рекомендуется, так как при сбросе принтера они теряются.
Чтобы добавить имеющиеся на принтере шрифты в настроечный принтерный файл с помощью текстового редактора:
1. Составьте список имеющихся на принтере PostScript-шрифтов (см. «Составление списка PostScript-шрифтов»).
2. Откройте настроечный принтерный файл в текстовом редакторе (Microsoft Word, TeachText, MS-DOS Editor), способном сохранять текст в формате Text Only.
ПРИМЕЧАНИЕ: Некоторые текстовые редакторы (например, Microsoft Write, Notepad) вставляют в файл невидимые символы (например, конец строки, перевод строки), которые делают невозможным синтаксический разбор PPD-файла.
3. Вставьте названия принтерных шрифтов перед строкой *Include, используя следующий синтаксис:
*Font fontname: encoding «(version)» charset
status
Например, резидентные шрифты в ПЗУ (ROM) :
*Font Courier: standard «(001.004)» standard ECU
*Pont Symbol: Special «(001.003)» Special ROM
Например, шрифты на жестком диске принтера:
«Font Palatino-Bold: Standard «(001.002)» Standard Disk
*Font Palatino-Boldltalic: Standard «(001.002)» Standard Disk
*Pont Palatino-Italic: Standard «(001.002)» Standard Disk
*Pont Palatine-Roman: Standard «(001.001)» Standard Disk
*Font MinionMM-Ep: Expert «(001.000)» Expert Disk
*Font MinionMM-It: Standard «(001.000)» Standard Disk
*Pont AGaramondAlt-Italic: Special «(001.001)» Special Disk
*Font AGaramondAlt-Regular: Special «(001.001)»
Special Disk
ПРИМЕЧАНИЕ: Encoding, version, charset и status (кодировка, версия, набор символов и статус) большинством программ (например, Adobe PageMaker) не используются. Aldus TrapWise требует корректной информации по кодировке шрифта, его версии, набору символов и статусу.
Если настроечный принтерный файл используется только в PageMaker или Aldus PrePrmt, после имени PostScript-шрифта требуется только следующая информация: Standard — для кодировки, 001.000 — для версии, Standard — для набора символов, Disk или ROM — для статуса. Например:
*Font Palatino-Bold: Standard «(001.000)»
Standard Disk
4. Сохраните настроечный файл в формате Text Only в папке Printer Descriptions (Macintosh) или в подкаталоге ALDUS/USENGLISH/PPD4 (Windows).
СОСТАВЛЕНИЕ СПИСКА ШРИФТОВ НА MACINTOSH
Создайте каталог шрифтов с помощью Apple LaserWriter 8.0 Utility v 7.4.1:
1. Намечайте с помощью утилиты Apple LaserWriter 8.0 Utility v 7.4.1 или более поздней версии каталог шрифтов на диск.
2. Откройте файл в текстовом редакторе и найдите имена шрифтов PostScript в скобках (например, Helvetica-ExtraCompressed), перечисленных в разделе Fonts on printer.
ИЛИ: Напечатайте или выведите на экран список PostScript-шрифтов с помощью утилиты загрузки PostScript-файлов (например, Adobe Font Downloader 5.04).
ПРИМЕЧАНИЕ: Имена шрифтов, выведенные на экран утилитой Adobe Font Downloader 5.04, скопировать невозможно.
ИЛИ: Загрузите подпрограмму PostScript, чтобы запросить шрифты принтера и возвратить их перечень в текстовом файле:
1. Откройте файл в текстовом редакторе.
2. Введите следующий PostScript-код (Color Central User Manual, с. 71):
statusdict begin save
/SC 100 string def
FontDirectorybpop = flushdforall
(fonts/*)bdup length 6 sub 6 exch getinterval =
flushd SC filenameforall restore
3. Сохраните в формате Text Only.
4. С помощью утилиты, способной возвращать текст или регистрационный файл (например, Apple EaserWriter 8.0 Utility v 7.4.1), загрузите файл подпрограммы PostScript. Возвращенный регистрационный файл будет содержать имена резидентных шрифтов на RIP принтера (т. е. в ПЗУ, ОЗУ, на жестком диске).
ИЛИ: Скопируйте строку FontName в АРМ-файл PostScript-шрифта.
ИЛИ: Откройте принтерный шрифт в ResEdit и возьмите имя шрифта из ресурса POST под номером 501.
ИЛИ: Воспользуйтесь файлом Update PPD Addition или файлом PostScript-подпрограммы PPDShdl.ps, включенными в пакет Adobe PageMaker 5.Ох, чтобы запросить и составить в сгенерированном настроечном файле список шрифтов принтера.
ПРИМЕЧАНИЕ: Список шрифтов в сгенерированном с помощью Update PPD Addition или PPDShell.ps настроечном файле можно копировать в другие настроечные файлы.
СОСТАВЛЕНИЕ СПИСКА ШРИФТОВ В WINDOWS
Напечатайте список шрифтов с помощью утилиты загрузки PostScript-файлов.
ИЛИ: Скопируйте строку FontName из AFM-файла, поставляемого вместе с PostScript-шрифтами.
Оптимизация растровых и векторных градиентов для печати PostScript
PostScript формирует эффект градиентов (постепенных переходов от одного цвета к другому) посредством серии полутоновых полос. Каждая полоса имеет свой оттенок, серия оттеночных полос создает иллюзию плавного цветового перехода. Чем тоньше полосы, тем мягче градиент. Если полосы слишком широкие, градиент получается «полосатым».
Чтобы не допустить этого, размер оттеночных полос градиента (линейного, радиального или векторного) вычисляют заранее. Это позволяет создать градиент с оптимальным числом переходов, сделать его более мягким и сократить время печати. Как правило, градиент с оттеночными полосами шириной менее 3 пунктов выглядит плавным, а с шириной 3 пункта и более — полосатым.
При создании векторных градиентов (blend) не стремитесь задавать слишком много шагов перехода в надежде получить плавность. Число получаемых оттенков связано с перечисленными ниже переменными величинами. Если количество заданных шагов будет больше числа возможных оттенков, на принтер подается лишняя информация, которую тот не может приспособить к делу, но должен обработать. В результате печать длится дольше, а качество не улучшается.
Информация, необходимая для вычисления ширины оттеночных полос.
ВЫЧИСЛЕНИЕ КОЛИЧЕСТВА ОТТЕНОЧНЫХ ПОЛОС ГРАДИЕНТА
Для вычисления количества оттенков и ширины полос воспользуйтесь следующим тремя формулами в том порядке, в каком они следуют:
([Разрешение (dpi)] / [Линиатура dpi)]) [в квадрате] + 1 = [а]
[а] х [диапазон оттенков в градиенте] = [b] [длина градиента] / [b] = [с],
где: [а] — начальное число возможных оттенков,
[b] — фактическое число оттенков градиента,
[c] — ширина каждой полосы (т. е. насколько полосы будут различимы).
Чтобы вычислить количество оттенков и ширину полос по этим формулам:
1. Разделите разрешение принтера на заданную линиатуру. Округлите полученное число до целого (отбросив десятичные доли), возведите его в квадрат и прибавьте к результату 1. Это приблизительное число оттенков, которое может воспроизвести принтер при заданных разрешении и линиатуре.
([Разрешение (dpi)] / [Линиатура dpi)]) [в квадрате] + 1 = [начальное число возможных оттенков]
2. Если начальное число возможных оттенков превышает 256, сократите его до 256. PostScript не может создать более 256 оттенков на каждую краску.
Например, установив разрешение 1270 dpi и лини-атуру 150 lpi, мы получим примерно 72 возможных оттенка. А если повысить разрешение до 2540 dpi и оставить ту же линиатуру, 150 lpi, число возможных оттенков увеличится до 287. Поскольку PostScript (Level 2)воспринимает только 256, то и число нужно уменьшить до 256.
3. Умножьте начальное число возможных оттенков на диапазон оттенков градиента, выражаемый десятичным числом.
[Начальное число возможных оттенков] х [диапазон оттенков в градиенте] = [фактическое число возможных оттенков в градиенте] Например, в градиенте от 20% до 80% черного диапазон оттенков составляет 60% или .60 в десятичном выражении. Поскольку диапазон менее 100% охватывает лишь часть всех возможных оттенков, необходимо вычислить их фактическое количество. В нашем примере 60% от 256 составляет 153 оттенка.
4. Измерьте объект вдоль направленности градиента и переведите результат в пункты (в 1 дюйме 72 пункта).
5. Разделите длину градиента на фактическое число возможных оттенков. Тем самым Вы определите ширину каждой оттеночной полосы или минимальную ширину объектов, используемых для формирования плавного цветового перехода, [длина градиента] / [фактическое число оттенков] = [ширина каждой полосы]
Например, если длина градиента 4 дюйма (288 пунктов) и состоит он из 153 оттенков, то ширина каждой полосы будет равна 1,9 пункта.
ВЫЧИСЛЕНИЕ ШИРИНЫ ПОЛОС ГРАДИЕНТОВ ИЗ ТРИАДНЫХ ЦВЕТОВ
При определении ширины полос для градиентов, печатаемых триадными красками, рассчитывайте ширину полос для каждой из используемых красок в отдельности. Чтобы учесть весь спектр ожидаемых значений, вычислите полосы для краски с наибольшим изменением цвета и для краски с наименьшим изменением. При печати полосы светлого цвета (желтого) менее заметны, чем темного (черного).
УМЕНЬШЕНИЕ ШИРИНЫ ПОЛОС
На степень заметности полос градиента влияют следующие переменные: разрешение печатающего устройства, линиатура, диапазон оттенков и длина градиента.
Чтобы сократить ширину оттеночных полос, отредактируйте переменные, проделав одно или несколько из следующих действий:
А. Повысьте разрешение, чтобы оттеночные полосы стали уже или чтобы начальное число уложилось в предел PostScript — 256. Повышать разрешение, когда число оттенков превышает 256, бессмысленно, так как PostScript воспроизводит их не более 256 на каждую краску.
Б. Понизьте величину линиатуры, чтобы уменьшить полученную по расчетной формуле ширину полос или чтобы начальное число уложилось в предел PostScript — 256. Понижать линиатуру, когда число оттенков превышает 256, бессмысленно, так как PostScript (Level 2) воспроизводит их не более 256 на каждую краску. В. Увеличьте диапазон оттенков, т. е. разницу между начальным и конечным цветом градиента. Г. Уменьшите длину градиента.
ИЛИ: Растушуйте границы оттеночных полос. Для этого можно воспользоваться фильтром шумов (noise) в программе, способной открывать и растрировать градиенты (например, Adobe Photoshop), либо выбрать краску или абсорбирующую бумагу, которые позволили бы немного размыть оттеночные полосы.
ИЛИ: Замените градиент, позволив принтеру напечатать вместо него предустановленный, или воспользуйтесь системой обработки PostScript (например, системой Scitex), которая заменяет градиенты своим собственным плавным растеризованным цветовым переходом.
PostScript Level 2. Общая информация
Разработан в 1985 году фирмой Adobe PostScript и представляет собой язык описания страниц для печати и отображения документов, включающих текст, графику, изображения и цвет. По мере развития языка появляются его новые версии, которые называются уровнями (Eevel I, Level 2). Для PostScript создан ряд расширений, позволяющих ему адаптироваться к новой технологии и дополняющих новыми функциональными особенностями. Расширения PostScript — это набор языковых функций, которые не являются стандартными для данного уровня.
В интерпретаторах PostScript Level 1 реализованы все функциональные особенности Level 1, задокументированные в первом издании руководства «PostScript Language Reference Manual».
PostScript Level 2 предлагает новые языковые функции, а также оптимизированные операторы текста и графики. Level 2 включает расширения для работы с цветами CMYK, композитными шрифтами, ряд расширений Display PostScript для растровых устройств. Поскольку Level 2 поддерживает функции и операторы Level 1, приложения, выполняющие печать на печатающие устройства Level 1, поддерживают печать и на и устройства поддерживающие Level 2. Между тем, PostScript Level 1 поддерживает не все функции и операторы Level 2. PostScript-приложения, предназначенные для работы с операторами и функциями Level 2, не имеют автоматической поддержки печати на печатающие устройства Level 1.
НОВЫЕ ОСОБЕННОСТИ ЯЗЫКА POSTSCRIPT LEVEL 2
PostScript Level 2 обеспечивает улучшенную и расширенную поддержку следующих функциональных особенностей:
Композитные шрифты
PostScript Level 2 включает расширение для композитных шрифтов. Композитные шрифты — это иерархическая коллекция базовых шрифтов (т. е. описаний отдельных символов), поддерживающая наборы более 256 символов и комплексное позиционирование знаков. Такие языки как китайский и японский требуют наборов, включающих более 256 символов. Фильтры компрессии и декомпрессии данных Фильтры компрессии и декомпрессии данных трансформируют информацию по мере ее считывания из файла или записи в файл. PostScript Level 2 поддерживает фильтры кодирования ASCII HEX, ASCII85, алгоритмы сжатия LZW, Run-length, CCITT fax (т. е. Group 3 и Group 4) и JPEG.
Аппаратно-независимый цвет
PostScript Level 2 поддерживает несколько аппаратно-независимых цветовых моделей международного стандарта CIE 1931, а также модели CMYK и RGB. Характеристики цвета в системе CIE строятся не на воспроизведении цвета, а на основе его зрительного восприятия. Эта система позволяет работать с цветом, качество которого не зависит от аппаратных средств: создавать, просматривать и распечатывать цветовую информацию на разных мониторах и принтерах можно с более высокой степенью предсказуемости.
Формы
Форма — это автономное описание графики, текста или изображений, которое можно воспроизводить многократно на любом количестве страниц с помощью кэша форм. Он занимает участок памяти, сохраняя там недавно использованные формы, и позволяет использовать их повторно без лишних затрат времени. Когда поступает запрос, форма извлекается из кэша. Если в течение установленного времени запроса на форму не поступает, та удаляется из памяти. Усовершенствованные алгоритмы растрирования Устройства PostScript Level 2 позволяют с повышенной точностью устанавливать углы наклона и линиатуру для полутоновых растров фотонаборных автоматов. Полутоновые растры вычисляются на основе таких параметров, как запрошенные точные угол наклона и линиатура растра, разрешение печатающего устройства и доступный для алгоритма объем памяти. В PostScript Level 2 применяются аппаратные словари растров, позволяющие выполнять настройку под конкретные устройства.
Словарь растров (например, type I, type 3) — это автономное, самодостаточное описание процесса растрирования.
Усовершенствованное управление памятью В устройстве PostScript Level 2 памятью наделяются все ресурсы и выделяется она динамически, в результате чего повышается эффективность работы. Когда возникает необходимость в дополнительном объеме памяти, виртуальная память (VM), стеки, кэш шрифтов, кэш форм и страничный буфер расширяются. PostScript Level 2 позволяет удалять из словарей отдельные элементы, а также удалять определения шрифтов в порядке, не связанном с порядком их создания. При работе с композитными объектами виртуальная память (VM) освобождается автоматически.
Образцы
PostScript Level 2 позволяет воспроизводить па печати не только сплошные цветовые заливки, но и заливки орнаментом. Операторы закрашивания заполняют область плитками орнамента с фиксированными интервалами. Для хранения недавно использованных орнаментов выделяется специальный участок памяти — кэш образцов, обеспечивающий быстрое повторное обращение к одному и тому же орнаменту. Когда поступает запрос на образец, он извлекается из кэша. Если в течение установленного времени запроса не поступает, образец удаляется из памяти.
Управление ресурсами
PostScript Level 2 позволяет быстро загружать и извлекать ресурсы (шрифты, формы, образцы, векторы кодирования шрифтов /font encoding vectors/ и словари воспроизведения цвета модели CIE). Ресурс — это набор именованных объектов, которые либо постоянно находятся в виртуальной памяти, либо могут быть загружены в нее по запросу. Существуют разные категории ресурсов с независимыми классами имен.
Функциональные особенности, связанные с принтерами
Оператор setpagedevice создает аппаратно-независимую среду, позволяющую устанавливать параметры страницы, а также контролировать стандартные (например, количество копий) и дополнительные (например, дуплексная печать, включение нескольких лотков подачи бумаги /multiple paper trays/) функции устройства.
Операторы PostScript Level 2
В реализации Level 2 языка PostScript имеются следующие операторы (сюда входят также операторы Level 1, задокументированные в первом издании «PostScript Language Reference Manual»):
«
»
arct
colorimage
сshow
currentblackgeneration
currentcacheparams
currentcraykcolor
currentcolor
currentcolorrendering
currentcolorscreen
currentcolorspace
currentcolortransfer
currentdevparams
currentglobal
currentgstate
currenthal f tone
currentobj ectf ormat
currentoverprint
currentpacking
currentpagedevice
currentshared
currentstrokeadjust
currentsystemparams
currentundercolorremDval
currentuserparams
defineresource
def ineuserobj ect
deletefile
execform
execuserobj ect
filenameforall
fileposition
filter
findencoding
findresource
gcheck
globaldict
GlobalFontDirectory
glyphshow
gstate
ineofill
infill
instroke
inueofill
inufill
inustroke
ISOLatinlEncoding
languagelevel
makepattem
packedarray
pr intob j ect
product
realtime
rectclip
rectfill
reotstroke
renamefile
resourceforall
resourcestatus
revision
root font
scheck
selectfont
serialnuihber
setbbox
setblackgeneration
setcachedevice2
setcacheparams
setcrnykcolor
setcolor
setcolorrendering
setcolorscreen
setcolorspace
setcolortransfer
setdevparams
setfileposition
setglobal
setgstate
sethalftone
setobj ect format
setoverprint
setpacking
setpagedevice
setpattern
setshared
setstrokeadjust
setsystemparams
setucacheparams
setundercolorreitioval
setuserparams
setvmthreshold
shareddict
SharedFontDirectory
startjob
uappend
ucache
ucachestatus
ueofill
ufill
undef
undefinefont
undef ineresource
undefineuserobject
upath
UserObjects
ustroke
ustrokepath
vrareclaiin
writeobject
xshow
xyshow
yshow
Преобразование PostScript-файлов в графику EPS
Чтобы преобразовать PostScript-файла в графику EPS, нужно открыть файл в текстовом редакторе и вставить строки, которые должны определять его как графику EPS и указывать размеры или ограничивающий прямоугольник изображения, содержащегося в файле. Добавление этих строк не гарантирует, что файл будет удовлетворять спецификации EPSF, но если пет иного выбора, позволит импортировать PostScript-файл в какую-нибудь программу.
Чтобы преобразовать PostScript-файл в графику EPS с помощью текстового редактора:
1. Загрузите PostScript-файл в PostScript-принтер с помощью загрузочной утилиты PostScript, чтобы удостовериться в том, что файл печатается корректно.
2. Очертите вокруг печатного изображения рамку, охватив его поплотнее. Она будет представлять ограничивающий прямоугольник.
3. Измерьте расстояние «а» от нижнего левого угла прямоугольника до левого края страницы. Запишите результат «а» в пунктах. (1 дюйм = 72 пт, 1 пика = 12 пт).
4. Измерьте расстояние «b» от нижнего левого угла прямоугольника до нижнего края страницы. Запишите результат «b» в пунктах.
5. Измерьте расстояние «с» от верхнего правого угла прямоугольника до левого края страницы. Запишите результат «с» в пунктах.
6. Измерьте расстояние «d» от верхнего правого угла прямоугольника до нижнего края страницы. Запищите результат «d» в пунктах.
7. Откройте PostScript-файл в текстовом редакторе. Строки в верхней части файла являются заголовком. Последующие строки представляют PostScript-описание изображения.
8. Отредактируйте PostScript-файл, чтобы он начинался со следующих строк:
%!PS-Adobe-2.0 EPSF-1.2
%%Creator: name
%%CreationDate: date
%%Title: filename
%%&BoundingBox: abed
%%EndCamments
где «name» это Ваше имя или инициалы, «date» — сегодняшняя дата в любом формате (например, 9/ 18/97 или September 18, 1997), «filename» — имя PostScript-файла, а «а», «b», «с» и «d» — размеры, которые Вы записали в п. п. 3 — 6.
ПРИМЕЧАНИЕ: Не вставляйте пустых строк между строками заголовка.
9. Сохраните файл в формате Text Only.
ПРИМЕЧАНИЕ: EPS-файл не предусматривает автоматического сохранения картинки для просмотра на экране (превью). Если EPS-файл, не имеющий экранного представления изображения, импортировать в какую-нибудь программу, он будет отображаться там как серый прямоугольник. Внутри прямоугольника могут появляться заголовок, код создателя и дата создания графики, если таковая информация имеется в EPS-файле. Если EPS-файл, имеющий превью, сохранить в формате Text Only (ASCII), превью будет утеряно.
Установка нестандартного формата бумаги в настроечном файле
Настроечный файл позволяет модифицировать в PPD-файле информацию для принтера, такую как резидентные шрифты, формат бумаги, виртуальная память. Большинство настольных лазерных принтеров с листовой подачей, вроде Apple LaserWriter II NTX, не поддерживает бумаги нестандартного размера, поэтому ни PostScript-подпрограмма PPDShell.ps, ни Update PPD Addition, ни утилита Laser Writer не могут вставлять в настроечный файл такую информацию, когда запрашивают эти принтеры. Печатные устройства (например, фотонаборные автоматы), которые могут работать со страницами произвольного размера, поддерживают информацию о нестандартном формате бумаги и включают в свой PPD-файл строку *VariablePaperSize True.
В следующем примере устанавливается нестандартный размер бумаги 3 х 4,5 дюйма под названием MyCustomPage. Ключевое слово PageRegion встречается не во всех PPD-файлах, поскольку его может заменять PageSize, которое способно функционировать как PageSize и как PageRegion. Последнее определяет параметры ввода, которые уже содержатся в ключевом слове PageSize.
Чтобы добавить в настроечный принтерный файл нестандартный формат бумаги:
1. Откройте настроечный файл в текстовом редакторе (Microsoft Word, SimpleText, MS-DOS Editor), способном сохранять в формате Text Only.
ПРИМЕЧАНИЕ: Некоторые текстовые редакторы (например, Microsoft Write, Notepad) вставляют в файл невидимые символы (например, конец строки, перевод строки), которые делают невозможным синтаксический разбор или чтение PPD-файла.
2. Найдите раздел с ключевыми словами TageSize и после последней строки * PageSize вставьте нужный размер бумаги, используя при этом следующий синтаксис:
Для портретной ориентации (1):
*PageSize MyCuatomPage: «216 324 1
statusdict begin setpage end»
где:
MyCustomPage — имя Вашей страницы (вводится без пробелов),
216 — узкая сторона листа в пт,
324 — широкая сторона листа в пт.
Для альбомной ориентации (0):
*PageSize MyCustomPage.Transverse: «324 216
0 statusdict begin setpage end»
где:
MyCustomPage.Transverse — имя Вашей страницы (вводится без пробелов), 324 — широкая сторона листа в пт, 216 — узкая сторона листа в пт.
ПРИМЕЧАНИЕ: Если задать слишком большой размер, нехватка памяти принтера может вызвать сбой при печати, урезанную печать или ошибку PostScript. Ширина страницы вместе с полями не должна превышать ширину печатной области фотонаборного автомата.
3. Найдите раздел с ключевыми словами *PageRegion и после последней строки *PageRegion вставьте нужный размер бумаги, используя следующий синтаксис:
Для портретной ориентации (1):
*PageRegion MyCustomPage: «216 324 1
statusdict begin setpage end»
Для альбомной ориентации (0):
*PageRegion MyCustomPage.Transverse: «324
216 0 statusdict begin setpage end»
4. Найдите раздел с ключевыми словами "TmageableArea и после последней строки "TmageableArea вставьте нужный размер бумаги, используя следующий синтаксис:
*ImageableArea MyCustomPage: «0 0 216 324»
где цифры «00216 324» определяют ограничивающий прямоугольник запечатываемой области бумаги.
5. Найдите ключевые слова *PaperDimension и после последней строки *PaperDimension вставьте нужный размер бумаги, используя следующий синтаксис:
Для портретной ориентации (1):
*PaperDimension MyCustomPage: «216 324»
Для альбомной ориентации (0):
*PaperDimension MyCustomPage: «324 216»
6. Сохраните настроечный файл в формате Text Only в папке Printer Descriptions (Macintosh) или в подкаталоге PPD4 (Windows).
Создание минимального настроечного файла в текстовом редакторе
Предлагаемые производителем печатающего устройства PPD-файлы описывают стандартную конфигурацию принтера. Чтобы сообщить программам, с которыми Вы работаете, более детальную информацию о своем принтере (например, нестандартный формат бумаги, комбинацию линейного растра и разрешения), дополните PPD-файл, создав настроечный принтерный файл.
Информация в настроечном файле, предшествующая строке *Include, заменяет собой аналогичную информацию PPD-файла. Фактическое имя настроечного файла может быть каким угодно. Строка*Include: «PPD NAME HERE» указывает, какой из PPD-файлов дополняется настроечным.
Чтобы сгенерировать настроечный файл с помощью текстового редактора:
1. Откройте настроечный файл в текстовом редакторе (Microsoft Word, SimpleText, MS-DOS Editor), способном сохранять текст в формате Text Only. ПРИМЕЧАНИЕ: Некоторые текстовые редакторы, такие как Microsoft Write, Notepad, вставляют в файл невидимые символы (например, конец строки, перевод строки), которые делают невозможным синтаксический разбор PPD-файла.
2. Введите следующие строки:
*PPD-Adobe: «4.0»
* Include: «PPD МИМЕ HERE»
*% End of Aldus PPD local customization file.
3. Замените слова «PPD NAME HERE» именем соответствующего PPD-файла, оставив кавычки. Например:
*Include: «LaserWriter II NTX V51.8»
4. Между строками *PPD-Adobe: «4.0» и "Include: вставьте свою информацию о формате бумаги, резидентных шрифтах принтера и линейном растре.
5. Сохраните настроечный файл в формате Text Only в папке Printer Descriptions (Macintosh) или в подкаталоге AlduscUsenglishcPpd4 (Windows).
Редактирование PPD-файла для отображения доступной виртуальной памяти
Дополняющие PPD настроечные файлы позволяют детализировать информацию (например, о резидентных шрифтах, другом формате бумаги, виртуальной памяти), передаваемую тому или иному принтеру. Строка *FreeVM в PPD- или настроечном файле показывает объем виртуальной памяти (VM) принтера в байтах. По этой величине считывающие PPD-файл приложения определяют, сколько VM требуется для растеризации страницы, а остальную VM отводят для загружаемых шрифтов. Если документ содержит сложную графику или в него должны быть загружены несколько шрифтов, а объем VM принтера невелик, проявляются симптомы нехватки памяти (долгая печать, ошибки PostScript «VMerror» и «limitcheck», подстановка шрифтов) или слишком долгая подкачка данных для печати. Чтобы отобразить в настроечном файле VM принтера:
1. Определите объем доступной принтеру VM. Процедура приводится далее.
2. Откройте настроечный файл в текстовом редакторе (Microsoft Word, SimpleText, MS-DOS Editor), способном сохранять текст в формате Text Only.
ПРИМЕЧАНИЕ: Некоторые текстовые редакторы, такие как Microsoft Write, Notepad, вставляют в файл невидимые символы (например, конец строки, перевод строки), вследствие чего приложения и принтерные драйверы не могут выполнить синтаксический разбор PPD-файла.
3. Найдите строку *FreeVM или вставьте ее перед строкой *Include. Например:
*FreeVM: «х»,
где «х» представляет объем виртуальной памяти в байтах.
4. Выделите значение VM в кавычках и замените его фактическим значением FreeVM в байтах.
5. Сохраните настроечный файл в формате Text Only в папке Printer Descriptions (Macintosh) или в поддиректории AlduscUsenglishcPpd4 (Windows). Способы определение объема виртуальной памяти принтера:
А. Воспользуйтесь функцией Printer Info драйвера Apple LaserWriter 8.x или Adobe PSPrinter 8.x.
Б. Загрузите подпрограмму PostScript, которая распечатывает величину виртуальной памяти в байтах.
В. С помощью Update PPD Addition или файла PostScript-подпрограммы PPDShell.ps создайте настроечный принтерный файл.
А. Чтобы определить объем VM с помощью функции Printer Info драйвера Apple LaserWriter 8.x или Adobe PSPrinter 8.x.:
1. Откройте Chooser и выберите драйвер принтера Apple LaserWriter 8.x или Adobe PSPrinter 8.x.
2. Выберите принтер и нажмите кнопку Setup.
3. Нажмите кнопку Printer Info. Если она недоступна, щелкните More Choises и снова нажмите Printer Info.
4. Щелкните кнопку Update Info, затем прокрутите список Printer Information, найдите Total Memory Available и запишите значение.
5. Чтобы преобразовать значение Total Memory Available из мегабайт в байты, умножьте его на 1048576. Результат будет представлять объем виртуальной памяти, указанный в строке *FreeVM настроечного файла.
Б. Чтобы загрузить PostScript-подпрограмму, способную печатать величину виртуальной памяти в байтах:
Напечатайте значение VM, загрузив PostScript-подпрограмму, чтобы опросить принтер:
1. Откройте настроечный файл в текстовом редакторе (Microsoft Word, SimpleText, MS-DOS Editor), способном сохранять текст в формате Text Only.
2. Введите следующий текст, в точности соблюдая формат:
%!РS
% Prints the FreeVM value
/Courier-Bold findfont 24 scalefont
setfont
vmstatus
100 500 moveto
(*FreeVM: ) show
16 string cvs show
pop pop
showpage
3. Сохраните файл в формате Text Only и назовите его vmstatus.ps.
4. С помощью загрузочной утилиты PostScript (Adobe Font Downloader 5.04, Apple LaserWriter 8.0 Utility) загрузите файл vmstatus.ps. на принтер.
5. Принтер печатает величину виртуальной памяти в байтах. Это значение фигурирует в строке TreeVM настроечного файла.
ИЛИ: Создайте регистрационный (текстовый) файл, где будет отражена доступная виртуальная память, загрузив PostScript-утилиту для запроса принтера
1. Откройте настроечный файл в текстовом редакторе (Microsoft Word, SimpleText, MS-DOS Editor), способном сохранять текст в формате Text Only.
2. Введите следующий текст:
%!PS
% Returns FreeVM value in a log file
vmstatus
(*FreeVM: ) = =
pop popf
3. Сохраните файл в формате Text Only и назовите его vmstatus.ps.
4. С помощью загрузочной PostScript-утилиты (например, Apple LaserWriter 8.0 Utility версии 7.4.1 или более поздней) загрузите файл vmstatus.ps. на принтер.
5. Принтер печатает величину виртуальной памяти в байтах. Это значение фигурирует в строке *FreeVM настроечного файла. ПРИМЕЧАНИЕ: Рядом с цифрами, показывающими величину FreeVM, в регистрационном файле могут появиться дополнительные символы (например, *FreeVM: E234454). Прежде чем копировать значение FreeVM, удалите эти символы (например, *FreeVM: 234454).
В. Update PPD Addition и файл PostScript-подпрограммы PPDShell.ps, входящие в пакет PageMaker 5.0х, создают настроечный принтерный файл, который включает объем виртуальной памяти выбранного принтера. Можете скопировать это значение и вставить его в другие настроечные файлы.