PostScript керівництвоWritten by Paul BourkeOriginal November 1990. Last updated December 1998
Translation into Bulgarian by Albert Ward.
Введення Постскриптум це мова програмування, який був розроблений, щоб вказати розташування на друкованій сторінці. PostScript-принтери та програмне забезпечення відображення приписка користуватися послугами перекладача, щоб перетворити опис сторінки у відображуваних графіки. Наступна інформація призначена в якості першого уроку в мові PostScript. Це буде зосередитися на тому, щоб використовувати постскриптум для створення графіки, а не досліджувати її як мову програмування. До кінця ви повинні відчувати себе впевнено про написання простих програм для малювання постскриптума графіку і текст. Додаткова інформація та повна специфікація мови може бути отримана з The Postscript Language Reference Manual від Adobe Systems Inc, опублікованій Reading, Massachuchusetts, 1985. Навіщо вивчати постскриптум, зрештою, багато програм можуть генерувати його для вас і драйвери PostScript друку можна надрукувати у файл? Деякі причини можуть бути:
Основи Postscript файли (в цілому) текстові файли і як такі вони легко можуть бути отримані вручну або як вихід написана користувальницьких програм. Як і в більшості мов програмування, PostScript файли (програми) призначені, щоб бути, принаймні, частково, для сприйняття людиною. Як такі, вони, як правило, вільний формат, тобто, текст може бути розділений на декілька рядків і відступом, щоб виділити логічну структуру. Шлях Шлях являє собою набір, можливо, відключених ліній і областей, що описують зображення. Шлях сама не звертається, після того, як вказана, то можна погладив (рядки) або заповнені (області), що робить відповідні відмітки на сторінці. Існує особливий тип шляху називається шлях відсікання, це шлях, протягом якого майбутній малюнок обмежені. За замовчуванням шлях відсікання є прямокутник, який відповідає кордон папери, що не будуть змінені під час цього уроку. Стек Постскриптум використовує стек, інакше відомий як LIFO (останній First Out) стек для зберігання програм і даних. Постскриптум перекладача поміщає програму постскриптума в стеку і виконує його інструкції, які вимагають дані будуть читати, що дані з стека. Наприклад, існує оператор в PostScript для множення двох чисел, mul. він вимагає два аргументи, а саме два числа, які повинні бути помножені разом. У постскриптумі це може бути визначене як 10 20 mul Перекладач б розмістити 10 і потім 20 в стек. Оператор мул буде видалити 20 а потім 10 з стека, помножте їх разом і залишити результат, 200, в стеку. Система координат Постскриптум використовує систему координат, яка апаратно-незалежна, тобто, вона не залежить від дозволу, розміру паперу тощо кінцевого пристрою виводу. Початкова система координат має вісь х вправо і по осі Y вгору, походження, розташованих у нижньому лівому кутку сторінки. Блоки мають «точок», які 1/72 дюйма завдовжки. Іншими словами, якщо ми малюємо лінію від припискою координат (72,72) і (144,72), ми будемо мати рядок, що починається на один дюйм в від лівої і правій частині сторінки, лінія буде горизонтальна і бути один дюйм довго. Система координат може бути змінено, що, масштабується, обертається, і переведені. Це часто робиться, щоб сформувати більш зручну систему для конкретного малюнок створюється. Основні команди для малювання Час намалювати що-небудь. Нижче складається з декількох операторів і даних, деякі оператори, такі як новий шлях не потрібно аргументів, інші, як LineTo два аргументи з стека. Всі приклади в цьому тексті показані як постскриптум зліва з отриманого зображення праворуч. Текст зліва також виступає в якості посилання на друку як файл postscript.
Є також відносні moveto і lineto команди, а саме, rmoveto і rlineto. У наступному прикладі заповнений об’єкт буде звернено в певний відтінок, і для контуру та інтер’єру. Відтінки варіюються від 0 (чорний) до 1 (білий). Зверніть увагу на closepath, який з’єднує перший вершину шляху з останнім.
Креслення команди, такі як інсульт та заповнити знищити поточний шлях, шлях навколо цього є використання gsave, що зберігає поточний шлях, так що він може бути відновлений з grestore. Текст Текст, мабуть, найскладніший і потужний аспект постскриптумі, як такий лише частину своїх можливостей обговорюватимуться тут. Одна з приємних речей є те, що спосіб символи, поміщені на сторінці не відрізняється від будь-якої іншої графіки. Інтерпретатор створює шлях для персонажа і потім або гладити або заповнені як звичайно.
Як і слід було очікувати положення (100,200) вище визначає положення в лівому нижньому кутку текстового рядка. Перші три рядки в наведеному вище прикладі це прибирання, що повинно бути зроблено в перший раз шрифт використовується. За замовчуванням розмір шрифту становить 1 пункт, то scalefont встановлює розмір шрифту в одиницях точок (1/72 дюйма). У дужки слів “Example 3” вказують, що це рядок. Трохи змінена версія вище застосувань charpath для лікування символи в рядку в дорозі, який може бути гладив або заповнені.
Для тих, хто з кольоровими LaserWriters головний інструкція інтерес, який замінює setgray це попередні приклади є setrgbcolor. Це вимагає 3 аргументу, червоний-зелений-синій компоненти кольору кожен коливається від 0 до 1.
Як уже згадувалося у введенні припискою це мова програмування. Розширити цієї мови не будуть покриті тут винятком, щоб показати деякі приклади процедур, які можуть бути корисні для спрощення постскриптума покоління і зробити постскриптум файли менше. Програмування Давайте припустимо, один, необхідної для підготовки багато квадратів з не кордони, але наповнений певного кольору. Можна створити шлях повторно для кожного з них, в якості альтернативи можна було б визначити щось на кшталт такого.
Ця процедура малює три кольорові квадратів поруч один з одним, кожен 20/72 дюйма квадратних, зверніть увагу, масштаб 20 на системі координат. Процедура малює одиничний квадрат і очікує, що колір RGB, щоб бути в стеку. Це може бути використано в якості методу (хоча неефективними) малювання растрове зображення. Навіть якщо просто малюнок багато ліній на сторінці, з тим щоб зменшити розмір файлу Як правило, щоб визначити процедуру, як показано нижче. Це просто визначає один символ “L”, щоб намалювати відрізок, то можна використовувати такі команди, як 100 200 200 200 л “намалювати відрізок від (100,200) до (200,200). /l { newpath moveto lineto stroke } def Деякі корисні команди інших Нижче наведені деякі інші часто використовувані команди разом з коротким описом, ви знову повинні проконсультуватися довідкове керівництво для всього набору команд. arc Малює дугу (у тому числі по колу). Аргументи х-центр, у-центр, радіус, кут початку, кут зупинки. Дуга малюється проти годинникової стрілки, кути в одиницях градусів. currentpoint Це приклад команди, яка не приймає ніяких аргументів, але залишає номера в стеку, а саме координат поточної точки. setdash Це встановлює тире атрибут лінії з погляду знак простору масиву. Так само, як струни позначаються круглими дужками (), масиви позначаються квадратні дужки []. Наприклад, наступну команду “[3 3] 0 setdash” буде робити які-небудь наступні рядки мають 3 одиниці тире з подальшим 3 одиниці простору. Аргумент після масиву тире зміщення для початку першого тире. setlinecap Це визначає те, що кінці лінії погладив виглядати. Вона приймає один аргумент, який може бути 0 (стикові ковпачки), 1 (круглі шапки), або 2 (розширені шапки стикові). Радіус круглих кришок і розширення стикових кришок визначається товщиною лінії.
setlinejoin Це визначає появу з’єднують ліній. Вона приймає один аргумент, який може бути 0 (митра), 1 (круглий), приєднатися або 2 (конічні з’єднання).
curveto Це приваблює криву безьє, обумовлену трьома крапками заданих в якості аргументів. Крива починається в поточній точці, закінчується в останній момент, і дотичні дані по лінії між першим другий і другий-третій пари. save Замість того, щоб “скасувати” зміни в графіки стані можна за допомогою команди зберегти, щоб підштовхнути весь графіком restore заявити в стек, а потім переустановити його з відновлення. Малюнок “маленькі” зображення Друк зображення за допомогою постскриптум дещо складніше, ніж графіки обговорювали досі. Приклади двох типів зображень будуть представлені, півтонових зображень (які також можуть бути використані для чорно-білих зображень) і 24 біт RGB зображення. 8 Bit Grey Scale Найпростіший метод, який застосовується на малих зображень команда приписка image. Це займе 5 аргументу: ширина і висота зображення, біти на піксель, матриця перетворення (6 номерів) і, нарешті, порядок придбання даних зображення. У наступному прикладі, сіра шкала (8 біт) зображення 24 пікселів в ширину і 34 пікселів у висоту. Оскільки в постскриптумі зображення визначається з лівого нижнього кута, і зображення визначається з її лівому верхньому кутку, матриця перетворення використовується тут робить відповідну вертикальну переворот. Процедура, використовувана тут по суті нульовий порядок, це шістнадцяткова рядок, як зазначено в кутових дужках <>. Постскриптум робить зображення як одна точка квадратний отже масштабування по горизонталі і 24 по вертикалі 34. Є багато деталей, залишені з цього обговорення, читач повинен проконсультуватися з опорного приписка керівництво для отримання додаткової інформації.
24 Bit RGB Colour Зображення RGB з 8 бітами на піксель може бути представлений у постскриптумі за допомогою командного colorimage, який дуже схожий на команду зображення. У наступному прикладі зображення 32 пікселів в ширину і 38 пікселів у висоту.
Що EPS? EPS (Encapsulated PostScript) є нормальним приписка з деякими обмеженнями і кілька зауважень у заданому форматі, що забезпечує більше інформації про приписку, що слід. Це був проект, щоб зробити його простіше для програми, щоб включити приписку згенерований інших у своїх власних сторінок. Повна специфікація може бути отримана з Adobe, але для того, щоб зробити приписка файл DSC (Adobe’s Document Structuring Convention), дотримується наступне має бути істинним:
banddevice exitserver initmatrix setshared clear framedevice quit startjob cleardictstack grestoreall renderbands copypage initclip setglobal initgraphics setpagedevice erasepage nulldevice sethalftone setscreen setgstate setmatrix settransfer undefinefont
Можливо, найголовніше, так як, як правило, додаток, що підтримує вставку приписка файл не повний інтерпретатор постскриптум, EPS-файл зазвичай має попередній перегляд зображення, пов’язаного з ним. Додаток справу з файлом EPS може відображати попередній перегляд в інтерфейсі дає краще уявлення, що буде друкувати. Слід зазначити, що EPS превью є одним з найбільш машини/OS залежних аспектів EPS. Часто використовувані коментарі Коментарі можуть бути, звичайно, бути додані в будь-якому місці, і вони будуть ігноруватися інтерпретатором. Є деякі стандартні коментарі найбільш поширеним з яких буде, перераховані нижче. Текст у квадратних дужках слід замінити відповідним текстом для файлу, в якому вони з’являються (без []). %!PS-Adobe-3.0 EPSF-3.0 %%Creator: [generally the program that generated the postscript] %%Title: [descriptive name or just the file name] %%CreationDate: [date the file was created] %%DocumentData: Clean7Bit %%Origin: [eg: 0 0] %%BoundingBox: xmin ymin xmax ymax %%LanguageLevel: 2 [could be 1 2 or 3] %%Pages: 1 %%Page: 1 1 %%EOF Малюнок “великі” зображення Завдяки довжині рядка та інших обмежень, перетворюючи “великі” растрових зображень у постскриптумі вимагає модифікації методів описаних раніше. Далі будуть описані найбільш загальний випадок, що представляє 24 бітний RGB кольорове зображення у вигляді файлу EPS. У той час як неефективна це може також бути використані для відтінках сірого і навіть чорно-білих зображень. У наступному коді “ширина” і “висота” слід замінити з номерами, відповідними образу.
Модифікації для зображень у градаціях сірого досить просто, змініть рядок {currentfile 3 width mul string readhexstring pop} bind до {currentfile width string readhexstring pop} bind і, звичайно, тільки один написати шістнадцяткове число (представляє рівень сірого пікселя) для кожного пікселя зображення. Ця техніка повинна працювати для зображень будь-якого розміру. Розміри паперу Paper Size Dimension (in points) ------------------ --------------------- Comm #10 Envelope 297 x 684 C5 Envelope 461 x 648 DL Envelope 312 x 624 Folio 595 x 935 Executive 522 x 756 Letter 612 x 792 Legal 612 x 1008 Ledger 1224 x 792 Tabloid 792 x 1224 A0 2384 x 3370 A1 1684 x 2384 A2 1191 x 1684 A3 842 x 1191 A4 595 x 842 A5 420 x 595 A6 297 x 420 A7 210 x 297 A8 148 x 210 A9 105 x 148 B0 2920 x 4127 B1 2064 x 2920 B2 1460 x 2064 B3 1032 x 1460 B4 729 x 1032 B5 516 x 729 B6 363 x 516 B7 258 x 363 B8 181 x 258 B9 127 x 181 B10 91 x 127 |