On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Нестрашный PostScript

Алексей Клецель

OPI (Open Prepress Interface) - технология, разработанная фирмой Aldus, позволяющая импортировать не оригинальные файлы, а их образы, создавая в программе лишь копию низкого разрешения (эскиз) и ссылку на оригинал. В процессе печати на PostScript-принтер эскизы подменяются на оригинальные файлы. Применение OPI вместо простого внедрения (embedding) дает возможность экономить ресурсы компьютера и прежде всего память, заметно повышая его производительность. OPI является осн овой работы с импортированными графическими файлами в таких программах, как FreeHand и QuarkXPress, широко применяется в других продуктах. RIP (Raster Image Processor) - программа, установленная на рабочей станции (компьютере), с которой управляется вывод. Она производит растеризацию данных, поступающих из файла печати, руководствуясь программой на языке PostScript, включенной в файл драйвером принтера. Получаемая битовая карта посылается на вывод в фотонаборный автомат. Составной частью RIP является интерпретатор PostScript - программа, трактующая PostScript-данные. С 1996 года все программы Adobe, связанные с DTP, имеют встроенный интерпретатор PostScript.

Что такое PostScript?

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

PostScript появился в 80-е годы, тогда, если вы помните, использовались матричные принтеры (а кое-где еще кулачковые и лепестковые), в них было подгружено несколько основных шрифтов, которыми принтер и мог печатать, причем по начертанию они отличались от экранных. О какой-то графике, в современном ее понимании, речи не велось. Поворотный момент наступил с появлением на рынке языка PostScript фирмы Adobe Systems и первых лазерных принтеров под маркой Apple, работающих под его управлением. Вместе они должны были обеспечить качественный вывод графики и шрифтовых начертаний в таком виде, как их видит пользователь в своем графическом редакторе или настольной издательской системе (НИС).

До появления PostScript для создания векторных построений использовались точки, соединенные по кратчайшей (прямой линией). И сегодня эта технология применяется в CAD и 3D-программах. Для создания сложных неровных поверхностей требуется огромное количество узлов, чтобы они выглядели гладко. PostScript разрабатывался для персональных настольных компьютеров, которые не имели в то время сколько-нибудь серьезных мощностей. Поэтому, с целью экономии машинных ресурсов, для построения непрямолинейных объектов в PostScript'е был применен метод описания кривых французского математика Пьера Безье. Вслед за выпуском первой версии PostScript Adobe анонсировала Illustrator для "Макинтош" - первую векторную программу персональных компьютеров. Для описания графических объектов в ней она использовала PostScript.

Вышедшие вслед за Illustrator'ом продукты конкурентов не могли использовать PostScript для создания графики, так как он собственность Adobe, поэтому для каждого из них был разработан собственный графический язык для описания объектов внутри программы, более или менее похожий на PostScript. Однако печать все равно происходила (и происходит) на PS-устройствах. Таким образом, для вывода конкурентам потребовалось снабдить свои редакторы программами-переводчиками на язык PostScript. С перевода (конвертации) начинается процесс печати. Illustrator'у конвертация не требуется, так как его графика уже описана с помощью PostScript, в чем можно легко убедиться, открыв в текстовом режиме любой Illustrator'овский файл. В процессе конвертации в PostScript выполняющая печать программа передает готовые данные программе-спулеру, поставляемой вместе с операционной системой. Спулер является не более чем накопителем данных; после того как печатающая программа закончила конвертацию и передачу спулеру информации, укомплектованный временный файл печати (spool file) посылается драйверу принтера, который либо выводит полученное на печать, либо, по желанию пользователя, формирует принтерный файл (то, что и называется PostScript-файлом). Такой файл, как правило, содержит следующие составляющие:

- документ исходной программы, описанный средствами PostScript;

- использованные в нем внедренные или импортированные по технологии OPI файлы;

- файлы шрифтов;

- программу для принтера на языке PostScript.

Шрифты и импортированные изображения тем не менее необязательно могут находиться в PS-файле. Существует возможность загрузки их в выводное устройство отдельно, но этот метод используется редко.

Одна из причин предпочтительного использования шрифтовых технологий Adobe (Type 1, Type 3, Multiply Master) заключается в том, что ни на одном из этапов не происходит их конвертация в формат PostScript, так как они изначально основаны на этой технологии. Понятно, что чем меньше разного рода конвертаций и переводов, тем меньше вероятность возникновения ошибок.

С целью ускорения печати производитель, как правило, записывает в память PS-принтера 13 стандартных шрифтов: Times, Helvetica, Courier, Symbol и их вариации. Существуют так же программы для подгрузки дополнительных. Использование подгружаемых в принтер дополнительных шрифтов незначительно экономит время на выводе, но может привести к ошибкам типа "<имя шрифта> not found, using Courier". С развитием мощностей компьютеров и принтеров, а также благодаря увеличению пропускной способности интерфейсов связи шрифты стали грузить в большинстве случаев в файл, а не в принтер, что дает некоторое увеличение размера PS-файла, зато повышает вероятность выхода с первого раза на бумагу в принтере или на пленку в фотонаборном автомате.

К слову, фотонаборный автомат (ФНА) нельзя считать большим принтером, который просто печатает на пленку. Его принцип действия сходен с проявкой пленки фотоаппаратов. Информация поступает к нему из компьютера в более "пережеванном" виде, чем к принтеру. "Жует" для него PostScript-файлы RIP, поставляемый в пакете программ поддержки фотонаборного автомата.

PostScript-ошибки

Еще во время подготовки работы во FreeHand'e, QuarkXPress или другой программе, важно помнить о проблемах несовместимости некоторых типов объектов, способов работы этих программ и их графического языка с PostScript. Под несовместимыми объектами понимаются образования, которые невозможно описать средствами PostScript, или когда генератор PostScript используемой программы не в состоянии это сделать. Их применение приводит либо к PostScript-ошибке и аварийному завершению работы, либо к некорректным результатам.

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

Чтобы получать сообщения об ошибках на Макинтош, в окне Print нужно отключить режим фоновой печати (Background Printing). В Windows 95 и выше откройте папку Printers (Start>Settings>Printers). Правой клавишей щелкните на необходимом принтере и выберите в раскрывающемся меню пункт Properties. В диалоговом окне Properties откройте вкладку PostScript. Включите параметр Print PostScript Error Information.

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

Процесс вывода заметно увеличивается и может в случае нехватки памяти закончиться зависанием, если импортированное в программу верстки или подготовки иллюстраций растровое изображение подвергалось трансформациям: изменению размера, разворотам либо вращению. Трансформация в векторном редакторе или НИС, в отличие от Photoshop'а, не изменяет изображение реально, а лишь указывает угол разворота или новый размер. Фактически задачи уменьшения, увеличения или разворота растрового файла перелагаются на принтер или RIP, которые не имеют мощностей компьютера для графики. Таким образом, вращение или переворот больших файлов высокого разрешения средствами выводного устройства может значительно увеличить время вывода или даже послужить причиной сбоя.

Из сказанного не нужно делать вывод, что следует все, абсолютно все готовить в Photoshop'e, нет, но вращением файлов размером более чем в 10 Mb, по моему мнению, не стоит "тренировать" устройство вывода.

Использование во FreeHand'е больших площадей с орнаментальной векторной заливкой может также привести к зависанию принтера или RIP. Это происходит скорее всего из-за неспособности генератора PostScript FreeHand'а правильно перевести заливку на PostScript. Возможно, он создает сплошное векторное образование, содержащее более полутора тысяч узлов (ограничение первой версии PostScript - 1600 узлов в кривой, второй - 10000), приводящее к остановке вывода на ряде устройств, даже поддерживающих PostScript Level 2. Аналогичная проблема в свое время была в CorelDRAW версии 7 и ниже. Конвертированный в кривые текстовый блок программа рассматривала как один вектор. На особо больших массах CorelDRAW обходила даже собственные внутренние ограничения, после чего уже сама не могла открыть такой файл!

Если отбросить проблемы, связанные с качеством программ, то слишком сложные кривые образуются обычно в процессе трассировки (tracing) - перевода растрового файла в векторное представление программой Adobe Streamline или аналогичными. Проблема решается использованием опций типа Split long paths (разбить длинные векторы) или Flatness (спрямление). Flatness работает по принципу упрощения кривой за счет выброса из нее узлов, без которых, по мнению программы, можно обойтись. Обратите внимание, PostScript-файл закрывается нормально, проблема возникает только на выводе.

Использование более десятка шрифтов также может привести к PostScript-ошибке. Ограничения на количество шрифтов в документе и узлов в кривой зависят от версии языка PostScript. Старайтесь использовать устройства и программы, поддерживающие как минимум PostScript Level 2, а лучше выше.

При закрытии файлов QuarkXPress сложности возникают обычно не с самими XPress-документами, а с импортированными из векторных программ файлами.

Эффекты прозрачности CorelDRAW 7 и 8, к сожалению, не могут быть выведены на PS-принтере, они автоматически конвертируются в bitmap, причем не лучшего качества. То же самое касается объектов, созданных инструментом Gradient Mesh в Adobe Illustrator 8. Их нужно предварительно растеризовать вручную или автоматически, отметив опцию Compatible gradient and gradient mesh printing в диалоговом окне File>Document Setup... Предпочтителен первый способ, он позволяет контролировать качество растеризации и точность создания маски вокруг объекта. Собственно, эти два примера иллюстрируют не ошибку печати, а некорректные результаты, вызванные несовместимостью отдельных объектов векторных программ с PostScript.

Оптимальным способом проверки совместимости с PostScript вашей работы является ее вывод на PostScript-принтере (или другом устройстве, обладающем интерпретатором PostScript). Когда у вас нет принтера или в вашем распоряжении только закрытый PS-файл, лучше всего его проверить в программе поддержки фотонаборного автомата, управляющей выводом. У большинства, однако, такой возможности нет, и в таком случае на помощь приходит Adobe Acrobat Distiller. Задача этой программы - конвертация PostScript- или EPS-файла в PDF. Если Distiller производит PDF-файл без ошибок (фатальных или предостерегающих) и его содержимое совершенно идентично исходному, то PostScript в порядке. Иногда, правда, Distiller ошибается и дает ошибку конвертации там, где проблемы в PS-файле на самом деле нет. Это связано с тем, что интерпретатор PostScript Distiller'а не может распознать некоторые операторы (какие именно, Distiller сообщает) из PS-файла. Это совсем не значит, что интерпретатор PostScript RIP или принтера этих операторов не поймет. Интерпретатор Distiller'а несколько урезан, что связано с размером программы - ее нельзя раздувать, включая также практически неиспользуемые функции PostScript; Distiller все-таки не ФНА (подобные, только еще более упрощенные, версии интерпретаторов для работы с EPS и PDF-графикой имеют и другие продукты Adobe).

Чтобы увереннее отличать проблемы Distiller'а от реальных PostScript-ошибок, пользуйтесь последними версиями драйверов Apple LaserWriter или Adode PS Printer. Это, по сути, две вариации одной и той же программы, разработанной совместно Apple и Adobe, но распространяемые отдельно. Их применение сводит ошибки Distiller'а к минимуму. Если они все-таки происходят, попробуйте упростить задачу Distiller'у. Как-то он дал сбой, когда я пытался конвертировать многостраничный документ с большим количеством самых разнообразных графических элементов. Закрытие той же работы постранично не дало ошибки в Distiller'е, впоследствии из исходного PostScript-файла без проблем были сделаны пленки. Так или иначе старайтесь использовать последнюю версию Distiller'а. Многие файлы, на которых давал сбой Distiller 3.x, 4-й прогоняет нормально.

Подробное описание ошибок PostScript и способов их преодоления вы можете найти в книге "Adobe: вопросы и ответы" издательства КУбК. Здесь лишь отмечу, что все способы, имеющиеся в распоряжении обычных пользователей, не владеющих языком PostScript, сводятся к замене, удалению или изменению того или иного элемента процесса: импортированного файла, драйвера, спулера. Лучший способ выявить причину ошибки - это изолировать ее, последовательно изменяя элементы и проверяя, остается после этого ошибка или нет.


Графика и дизайн: общие темы