ЭВМHISTORY
Статьи. Обзоры. Истории

Программирование | PostScript



postscript, post, script, постскрипт, пост, скрипт, язык, программирование

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

Postscript был разработан Джоном Уорноком и Чаком Гешке из Adobe Systems в начале 80-х гг. Исходно Postscript использовался как ядро механизма печати компьютеров Apple, но вскоре стал широко распространенным для большинства компьютерных систем.

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

Вышедшие вслед за Illustrator продукты конкурентов не могли использовать PostScript для создания графики, так как он — собственность Adobe, поэтому для каждого из них был разработан собственный графический язык описания объектов, более или менее похожий на PostScript. Однако печать все равно происходила (и происходит) на PS-устройствах. Таким образом, для вывода конкурентам потребовалось снабдить свои редакторы программами-переводчиками на язык PostScript. С перевода (конвертации) начинается процесс печати. Illustrator конвертация не требуется, так как его графика уже описана с помощью PostScript, в чем можно легко убедиться, открыв в текстовом режиме любой, созданный в этой программе, файл. В процессе конвертации в 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-ошибки


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

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

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

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

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

Из сказанного совсем не следует, что все, абсолютно все, надо готовить в Photoshop, нет, но вращение файлов размером более чем в 10 Мбайт, по моему мнению, — задача не для устройства вывода.

Использование во FreeHand больших площадей с орнаментальной векторной заливкой может также привести к зависанию принтера или RIP. Это происходит, скорее всего, из-за неспособности встроенного во FreeHand генератора PostScript правильно интерпретировать заливку в кодах PostScript. Возможно, он создает сплошное векторное образование, содержащее более полутора тысяч узлов (ограничение первой версии PostScript — 1600 узлов в кривой, второй — 10 000), приводящее к остановке вывода на ряде устройств, даже поддерживающих 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 в диалоговом окне Document Setup... Предпочтителен первый способ, он позволяет контролировать качество растрирования и точность создания маски вокруг объекта. Собственно, эти два примера иллюстрируют не ошибку печати, а некорректные результаты, вызванные несовместимостью отдельных объектов векторных программ с PostScript.

Оптимальным способом проверки совместимости с PostScript вашей работы является ее вывод на PostScript-принтере (или другом устройстве, обладающем интерпретатором PostScript). Если у вас нет принтера или в вашем распоряжении имеется только закрытый PS-файл, лучше всего его проверить в программе поддержки фотонаборного автомата, управляющей выводом. У большинства пользователей, однако, такой возможности нет, в таком случае на помощь приходит Adobe Acrobat Distiller. Задача этой программы — конвертация PostScript- или EPS-файла в PDF. Если Distiller создает PDF-файл без ошибок (фатальных или предостерегающих) и его содержимое совершенно идентично исходному, то с PostScript проблем не будет. Иногда, правда, Distiller дает ошибку конвертации, даже если сбоев в PS-файле на самом деле нет. Это связано с тем, что используемый в Distiller интерпретатор PostScript не может распознать некоторые операторы (какие именно, Distiller сообщает) из PS-файла. Это совсем не значит, что интерпретатор PostScript растрового процессора или принтера этих операторов не поймет. Интерпретатор 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, все способы сводятся к замене, удалению или изменению того или иного элемента процесса: импортированного файла, драйвера, спулера. Лучший метод выявить причину ошибки — это изолировать ее, последовательно изменяя элементы и проверяя, удалось ли ее ликвидировать или нет.

DCS (Desktop Color Separations) — технология, разработанная фирмой Quark, позволяет делить растровый цветоделенный файл в формате EPS на пять файлов: четыре файла с каждой сепарацией по отдельности и пятый связующий с растровым эскизом. Выглядит это так: picture.eps, picture.c, picture.m, picture.y, picture.k.

DCS может использоваться, например, для подмены английского текста русским только на черной плашке и для выгона только ее. Таким образом удешевляется перевод на другие языки: вместо четырех сепараций каждый раз нужно делать только одну. Технология DCS не получила большого распространения.

Все PostScript-файлы делятся на две категории: Separations и Composite. Первые — цветоделенные, где «сепарация» описывается как отдельный лист. Такого рода файлы требуются, обычно, для старых RIP и для вывода пленок на принтерах. При создании таких файлов нужно указывать все необходимые параметры: разрешение, линиатуру растра, размер листа (или ширина рулона), углы наклона растра. Более современные RIP могут принимать композитные файлы. Они сами осуществляют цветоделение, оператор вывода (человек, не команда) устанавливает линиатуру, разрешение, метод генерации черного, углы растра. С композитными файлами бывает меньше проблем, так как установку большинства важных параметров осуществляет оператор, обслуживающий технику, а не клиенты с разным уровнем знаний, опыта и понимания процесса.

Некоторые Windows-программы не имеют функции печати в файл (например, QuarkXPress 3.32), в таком случае откройте папку Printers (Start/Settings/ Printers), на необходимом PostScript-принтере нажмите правую клавишу и выберите опцию Properties, в появившемся окне перейдите на вкладку Details и в выпадающем списке Print to the following port: выберите FILE: (Creates a file on disk).

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

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

Для www.publish.ru


В начало


Программирование | PostScript



Рейтинг@Mail.ru Яндекс.Метрика