Скачать презентацию Технология допечатной подготовки для цифровой печати Языки Скачать презентацию Технология допечатной подготовки для цифровой печати Языки

05f52291ac7a301e0ff522e37bb0777d.ppt

  • Количество слайдов: 149

Технология допечатной подготовки для цифровой печати Технология допечатной подготовки для цифровой печати

Языки описания страниц • PCL (Printer Command Language-HP) • PS (Post. Script- Adobe-1980) EPS, Языки описания страниц • PCL (Printer Command Language-HP) • PS (Post. Script- Adobe-1980) EPS, AI • PDF ((Portable Document Format) • GDI (Graphical Device Interface-MS) • XPS (ХМL Рарег Sресification - MS) Производители разработали собственные языки • RPCS (Refined Printing Command Stream-Roland) • HP GL (HP Graphic Language). .

Adobe Post. Script • программа с командами на выполнение для выводного устройства. • . Adobe Post. Script • программа с командами на выполнение для выводного устройства. • . ps или. prn • получаются с помощью функции Print to File графических программ при использовании драйвера Post. Script-принтера. Содержат • сам документ (только то, что располагалось на страницах), • все связанные файлы (как растровые, так и векторные), • использованные шрифты, • цветоделение, • линиатуру растра • форму растровой точки • и другие данные для выводного устройства. Растровые данные, как правило, записываются в двоичной кодировке (Binary).

Структура файла Post. Script Состоит из: • заголовка- начинается строкой “%!PS-Adobe. N. M” где Структура файла Post. Script Состоит из: • заголовка- начинается строкой “%!PS-Adobe. N. M” где N. M – версия спецификации, далее идут структурные комментарии с общими свойствами документа, и заканчивается заголовок строкой “%%End. Comments”. • пролога - содержатся описания подпрограмм и данные, необходимые для печати документа – например, процедуры и шрифты, заканчивается комментарием “%%End. Prolog”.

Структура файла Post. Script • тела программы - содержатся команды, отвечающие за отрисовку каждой Структура файла Post. Script • тела программы - содержатся команды, отвечающие за отрисовку каждой страницы, предваряемые строкой “%%Page: <метка> <номер>”, где <метка> - метка страницы, которая не выводится на печать, и <номер> - порядковый номер страницы в файле, например, %%Page: iii 3 • После команд отрисовки всех страниц идёт структурный комментарий “%%Trailer” • эпилога - можно продублировать комментарии из заголовка (это реализовано на случай, если в начале вывода программе ещё не известно, например, число страниц) – в этом случае вместо числовых значений параметров в заголовке надо писать “(atend)”. • Заканчивается файл строкой “%%EOF”.

Пример программы %!PS-Adobe-1. 0 % По умолчанию, постскрипт использует единицу измерения 1 пункт=1/72 % Пример программы %!PS-Adobe-1. 0 % По умолчанию, постскрипт использует единицу измерения 1 пункт=1/72 % дюйма, % а нам нравятся миллиметры. 72 25. 4 div % 1 мм = 72/25. 4 пунктов dup % дублировать значение на вершине стека scale % растянуть в это количество раз по обеим % координатам 100 translate % установить начало координат в (100 мм, 100 мм) /Times-Roman findfont % взять шрифт Times-Roman 10 scalefont % растянуть до размера 10 %(у нас единица измерения - мм!) setfont % установить выбранный шрифт 0 30 330 { % цикл для углов от 0 до 330 с шагом 30 gsave % запомнить текущее преобразование координат rotate % повернуть систему координат (угол в градусах берём с вершины стека) 15 0 moveto % перейти в точку (15 мм, 0 мм) (Wikipedia) show % написать слово текущим шрифтом grestore % вернуть преобразование координат } for % конец цикла for showpage % вывести страницу

EPS (Encapsulated Post. Script) - использует упрощенную версию Post. Script: • не может содержать EPS (Encapsulated Post. Script) - использует упрощенную версию Post. Script: • не может содержать в одном файле более одной страницы, • не сохраняет ряд установок для принтера. поддерживает все цветовые модели, обтравочный контур, • информацию и треппинге и растрах, • внедренные шрифты.

PDF (Portable Document Format) • современное профессиональное печатное оборудование может обрабатывать PDF непосредственно • PDF (Portable Document Format) • современное профессиональное печатное оборудование может обрабатывать PDF непосредственно • позволяет внедрять необходимые шрифты (построчный текст), векторные и растровые изображения, формы и мультимедиа-вставки • поддерживает RGB, CMYK… • имеет собственные технические форматы для полиграфии: PDF/X-1, PDF/X-3, • механизм электронных подписей для защиты и проверки подлинности документов • стандартными средствами редактировать документы в этом формате невозможно, для этих целей обычно применяют распознаватели текста • все данные в нем могут сжиматься, причем к разного типа информации применяются разные, наиболее подходящие для них типы сжатия: JPEG, RLE, CCITT, ZIP • не использует конструкции программных языков;

Adobe PDF был всегда? • Формату всего полтора десятка лет, а его использование в Adobe PDF был всегда? • Формату всего полтора десятка лет, а его использование в допечатной подготовке началось в 1996 г. Тогда с выходом Acrobat 3. 0 была представлена версия PDF 1. 2 с поддержкой цветового пространства CMYK и смесевых цветов, стандарта OPI 1. 3, а также надпечатки. • «Представьте, что можете распространять насыщенные графикой и текстом документы (газеты, журнальные статьи, технические руководства и т. п. ) по электронным каналам. Их можно просматривать на любом компьютере, отпечатать на локальном принтере. Это кардинально изменит способы обмена информацией» . В 1991 г. на конференции Seybold демонстрировался прототип под названием IPS (Interchange Post. Script), а первую версию Adobe PDF показали через год на Comdex, где она получила приз лучшего экспоната.

 • Успех пришёл не сразу. Помогли две принципиальных вещи, сделанные Adobe. Во-первых, стандарт • Успех пришёл не сразу. Помогли две принципиальных вещи, сделанные Adobe. Во-первых, стандарт является открытым. Все его описания и программные инструменты доступны сторонним разработчикам. Вовторых, в 1994 г. создатели решили, что не будут зарабатывать на продаже Acrobat Reader и начали раздавать его бесплатно. Пакет разошёлся тиражом 500 млн копий. Солидная база читателей! • После выхода версии 1. 2 оживились сторонние разработчики, почувствовавшие интерес со стороны издателей и полиграфистов. В 1997 и 1998 гг. вышло множество специализированных расширений, самые известные — En. Focus Pit. Stop и Lantanarips Cracker. Jack. Agfa сделала ставку на PDF в первой версии своего АСУ ТП Apogee. Пример оказался заразительным. • Открытость стандарта не всегда благо — несколько ведущих производителей из допечатной сферы, измученные множеством версий файлов, создали стандарт PDF/X-1. Соответствие файла спецификациям PDF/X-1 существенно снижало вероятность проблем при выводе.

%PDF-1. 4 %вг. ПУ 171 0 obj<</H[6788 949]/Linearized 1/E 828913/L 1543800/N 2/O 176/T 1540316>> %PDF-1. 4 %вг. ПУ 171 0 obj<> endobj xref 171 317 000016 00000 n <<198 c 96 cc 06 a 6 b 34390586 b 2 f 56 b 3 b 256>]>> startxref 0 %%EOF 175 0 obj<>stream “№U¦K`oо» 0 SВ BQ 2 GЏјЭАъі 3 Дњnr ґн. ЪЏ—· 魯[ Вб жm ж k. РJD{ уњЩiћћУд&б. Фc aђЃ}у7 Rр4±^Љ]Е›nў”њ {м¦ќFУЊ I”M 63Љ , bг. T>Ул N. ҐРх(іФ. ќ†Ц‚Rы"п@ќ FVZµN ЎС° ·>BэЇ ®ЉR ]]Pэ. Гh јvћДk 9 MTГП(СЇp P} ѕzрлh зх!ш , ѓk¤Еѓr§^АQfо. С_<о~їD gq. ЪR›~±х ‹ИЬzх. Р$ўАљ 7ё]t¬ ј®/%( 0 Вa. DЇ «%љ 0!Ё„ЯЛЃГ ћрЂљ §ћ” 1– Ѕ§ф. Выц®Fћ=·ї§dЊ» щ ЃJэт4 SД[email protected] ”¤ Б< в— й~ z^ endstream endobj 487 0 obj<>/W[1 1 1]/Type/XRef/Index[146 25]>>stream • • <> startxref 116 %%EOF

Недостатки PDF • PDF - патентованный формат компании Adobe, подверсии PDF, такие как PDF/X-1 Недостатки PDF • PDF - патентованный формат компании Adobe, подверсии PDF, такие как PDF/X-1 могут получить ISO-сертификат, так как разработаны не Adobe, а консорциумом независимых организаций. • PDF пытается стать всеохватывающим стандартом, что не позволяет ему быть настолько эффективным, как специализированные решения PDF нацелен прежде всего на визуализацию документов, не сохраняет их логическую структуру. • PDF-файлы сложно редактировать, небольшие изменения могут быть внесены, сложно, добавлять блоки текста или изображения в существующий PDFфайл.

Структура PDF • PDF-файлы - 7 -bit текстовые файлы в кодировке ASCII. Они могут Структура PDF • PDF-файлы - 7 -bit текстовые файлы в кодировке ASCII. Они могут быть открыты любом текстовом редакторе, за исключением случаев, когда текст был компрессирован. • Каждая строка в PDF может содержать до 255 символов. • Каждя строка заканчивается возвратом каретки, переводом строки или возвратом каретки с переводом строки (зависит от приложения, создавшего файл и от платформы). • PDF-файлы регистро - зависимые.

Структура PDF Четыре секции: • Заголовок, содержащий информацию о спецификации, по которой создан файл. Структура PDF Четыре секции: • Заголовок, содержащий информацию о спецификации, по которой создан файл. Выглядит примерно так: '%PDF-1. 2'. • Тело, содержащее описание различных элементов, использованных на всех страницах. • Таблица ссылок на все элементы из тела файла, которые используются на страницах PDF-файла. • Окончание, которое сообщает приложению или RIPу где находится таблица ссылок и всегда заканчивается '%%EOF'. Если эта строка потеряна, PDF-file считается незавершенным и не может быть обработан RIPом или другим приложением.

Изменение данных При добавлении данных в PDF-файл (например, при редактировании текста и последующем сохранении), Изменение данных При добавлении данных в PDF-файл (например, при редактировании текста и последующем сохранении), в конец файла добавляются еще тело, таблица ссылок и окончание.

Формат PDF-файлов Шрифты • Post. Script (type 1 и type 3) и True. Type, Формат PDF-файлов Шрифты • Post. Script (type 1 и type 3) и True. Type, • могут включаться в PDF-файл для того, чтобы он мог быть просмотрен и отпечатан таким же, каким и был создан. Если какой-либо шрифт пропущен в PDF-файле, то Acrobat автоматически попытается эмулировать его, используя один из шрифтов Multiple Master. Файл при этом не будет выглядеть точно так же, как был создан, но текст сохранится. Шрифты Multiple Master, используемые в Acrobat, : • Adobe Serif MM • Adobe Sans MM Если вы захотите редактировать текст, а нужного символа не будет в шрифте, то он не может быть введен. • Слияние двух файлов, содержащих разные наборы символов одного шрифта приведет к потере некоторых символов.

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

Изображения • черно-белые (line-art) • серые • многотоновые: Duotones, tritones, Hexachrome. . • RGB Изображения • черно-белые (line-art) • серые • многотоновые: Duotones, tritones, Hexachrome. . • RGB : могут содержать 16 миллионов цветов, но можно включать изображения и с меньшим числом цветов (например, 256). • CMYK изображения • компрессируются для уменьшения размеров

Градиенты Градиент - переход из одного цвета в другой. Раньше приложения кодировали градиенты, создавая Градиенты Градиент - переход из одного цвета в другой. Раньше приложения кодировали градиенты, создавая огромное число объектов (линий, прямоугольников или эллипсов для круглых градиентов), которые накладывались с небольшим смещением и с небольшим изменением цвета, в Post. Script-файле были 256 разноцветных прямоугольников, лежащих один на другом. На Post. Script 3 принтерах, Acrobat просто передает в принтер код сглаженных теней, и вывод происходит быстро и качественно.

Docunent Object Model • app Acrobat • doc PDF document • dbg Java. Script Docunent Object Model • app Acrobat • doc PDF document • dbg Java. Script debugger • console Java. Script console • global Persistent and cross-document information • util Java. Script utility methods • dialog Adobe Dialog Manager (ADM) • security Encryption and digital signatures • SOAP Web Services • search Searching and indexing • ADBC Database connections and queries • event Java. Script events ~80 Objects

Application Level – Console Window – Java. Script Files (Folder Level Scripts) – Menu Application Level – Console Window – Java. Script Files (Folder Level Scripts) – Menu Items and Toolbar Buttons – Timer Events – Batch Sequence

Java. Script- основной скриптовый язык • Скриптовый- интерпретируемый, управляющий приложением (программировать действия приложения, зная Java. Script- основной скриптовый язык • Скриптовый- интерпретируемый, управляющий приложением (программировать действия приложения, зная объектную модель документа DOMDocument Object Model, может быть- автоматически генерируемый (VBA в MS Office- запись действий в виде макросов VBA) • Основной- HTML, Corel Draw, In. Design, Acrobat

Java. Script – основные черты • Похож на С# _______ entry = entry * Java. Script – основные черты • Похож на С# _______ entry = entry * multiplier + digit / divisor; if (divisor >= 10) { divisor = divisor * 10; } else { multiplier = 10; } return entry; Основные отличия-работа с переменными

Имена переменных, создание переменных • При создании переменной нет необходимости указывать ее тип • Имена переменных, создание переменных • При создании переменной нет необходимости указывать ее тип • В процессе выполнения программы уже созданные переменные можно приводить к различным типам данных • Имена переменных могут начинаться с любой буквы (от a до z, или A-Z ) либо с символа подчеркивания (_), оставшаяся часть может содержать цифры, символы подчеркивания и буквы (различаются символы верхнего и нижнего регистра)

Переменную можно создать • при помощи оператора var и операции присваивания (=); • при Переменную можно создать • при помощи оператора var и операции присваивания (=); • при помощи операции присваивания (=).

Неявное преобразование var a = 35, b = Неявное преобразование var a = 35, b = "5", c; c = a + b; c = c - a; document. writeln("C=" + c); ______ С=320

Неявное преобразование- массивы var my. Array = new Array(3. 14, true, 85, date(), Неявное преобразование- массивы var my. Array = new Array(3. 14, true, 85, date(), "word");

Будующее ECMAScript 4, на черновом варианте которого построены Action. Script 3 и Mozilla Tamarin, Будующее ECMAScript 4, на черновом варианте которого построены Action. Script 3 и Mozilla Tamarin, не станет будущим Java. Script, а вместо него будущим продолжит оставаться прошлое Java. Script, т. е. ECMAScript 3, проапгрейдженный до версии 3. 1. Иными словами, Java. Script-разработчикам не видать всех тех плюшек, что были уже опробованы в AS 3. В частности, можно забыть : - неймспейсы, пакеты и биндинг. - новый синтаксис и новые семантические конструкции - классы. Взамен классов будет элегантная штука "Object. freeze()", которая "замораживает" объект. Не будет в Java. Script честных классов, останется их симуляция. - и вот эти возможности. - в общем говоря, сохранится существующий стандарт. Вывод: в развитии Java. Script предпочтение отдано целостности существующих подходов, а не новой функциональности. Многие браузеры попросту не готовы к реализации ECMAScript 4

Inside PDF – Document Level Scripts – Document Actions – Page Actions – Bookmarks Inside PDF – Document Level Scripts – Document Actions – Page Actions – Bookmarks – Form Fields

External Scripts – FDF Files – External Programs – through the JSO in VB External Scripts – FDF Files – External Programs – through the JSO in VB – Plug-ins

Структура Структура

Document Object Доступ-this Свойства • num. Pages • page. Num Методы • close. Doc Document Object Доступ-this Свойства • num. Pages • page. Num Методы • close. Doc • create. Data. Object

Объектная модель app Объект приложения - статический объект, который представляет приложение • открыть или Объектная модель app Объект приложения - статический объект, который представляет приложение • открыть или создать PDF настроить интерфейс Акробата • показ меню, событий, состояний • показ модальных диалоговое окон • изменять состав кнопкок панели инструментов, меню, и пунктов меню определить • продукт Adobe и версию, которую использует конечный пользователь • доступные имена принтеров и цветовые интервалы

Объектная модель doc Объект Документ - к документу PDF: опросить состояние - обращаться к Объектная модель doc Объект Документ - к документу PDF: опросить состояние - обращаться к объектам, содержащимся в пределах документа (закладкам, полям, шаблонам, аннотациям, звукам). манипулировать содержимым, управлять его структурой, поведением и форматом, создавать новое содержимое в пределах документа.

Объект Документ Объект Документ

// Create a new PDF document: var new. Doc = app. new. Doc(); // // Create a new PDF document: var new. Doc = app. new. Doc(); // Insert doc 1. pdf: new. Doc. insert. Pages({ n. Page: -1, c. Path: "/c/temp/doc 1. pdf", }); // Insert doc 2. pdf: new. Doc. insert. Pages({ n. Page: new. Doc. num. Pages-1, c. Path: "/c/temp/doc 2. pdf", }); // Save the new document: new. Doc. save. As({ c. Path: "/c/temp/my. New. Doc. pdf"; }); // Close the new document without notifying : new. Doc. close. Doc(true);

Операции над файлами var doc = app. open. Doc({ c. Path: Операции над файлами var doc = app. open. Doc({ c. Path: "/C/temp/doc 1. pdf" }) a. Files = new Array("doc 2. pdf", "doc 3. pdf"); for ( var i=0; i < a. Files. length; i++) { doc. insert. Pages ({ n. Page: doc. num. Pages-1, c. Path: a. Files[i], n. Start: 0 }); }

Операции над страницами var filename = Операции над страницами var filename = "invoice"; for (var i = 0; i < this. num. Pages; i++) this. extract. Pages({ n. Start: i, c. Path : filename + i + ". pdf" });

Работа с содержимым полей var v = this. get. Field( Работа с содержимым полей var v = this. get. Field("my. Text. Field"). value; // Get the contents "My. Notes. txt « var o. File = this. get. Data. Object. Contents("My. Notes. txt"); // Convert the returned stream to a string var c. File = util. string. From. Stream(o. File, "utf-8"); // Append new data at the end of the string c. File += "rn" + v; // Convert back to a stream o. File = util. stream. From. String( c. File, "utf-8"); // Overwrite the old attachment this. set. Data. Object. Contents("My. Notes. txt", o. File); // Read the contents of the file attachment to a // multiline text field var o. File = this. get. Data. Object. Contents("My. Notes. txt"); var c. File = util. string. From. Stream(o. File, "utf-8"); this. get. Field("my. Text. Field"). value = c. File;

Создание таблицы var my. Column = new Array(); my. Column[0] = Создание таблицы var my. Column = new Array(); my. Column[0] = "my. Field. Col. name"; my. Column[1] = "my. Field. Col. birthday"; my. Column[2] = "my. Field. Col. ssn"; var initial. Position = [ 36, 36 ]; var w = 2*72; var h = 12; var v. Gap = 6; var a. Rect = [initial. Position[0], initial. Position[1]-(h+v. Gap), initial. Position[0]+w, initial. Position[1]-h-(h+v. Gap)]; for (var i=0; i

In. Design DOM In. Design DOM

try{ my. Font = app. fonts. item( try{ my. Font = app. fonts. item("Arial"); } catch (my. Error){}; var my. Document = app. documents. item(0); with(my. Document){ var my. Page = pages. item(0); var my. Bounds = my. Get. Bounds(my. Page, my. Document); with(my. Document. pages. item(0)){ //Get a reference to the text frame. var my. Text. Frame = text. Frames. item(0); //Change the size of the text frame. my. Text. Frame. geometric. Bounds = my. Bounds; var my. Paragraph = my. Text. Frame. paragraphs. item(0); my. Paragraph. applied. Font = my. Font; my. Paragraph. justification = Justification. center. Align; my. Paragraph. point. Size = 48; } }

function my. Get. Bounds(my. Document, my. Page){ var my. Page. Width = my. Document. function my. Get. Bounds(my. Document, my. Page){ var my. Page. Width = my. Document. document. Preferences. page. Width; var my. Page. Height = my. Document. document. Preferences. page. Height if(my. Page. side == Page. Side. Options. left. Hand){ var my. X 2 = my. Page. margin. Preferences. left; var my. X 1 = my. Page. margin. Preferences. right; } else{ var my. X 1 = my. Page. margin. Preferences. left; var my. X 2 = my. Page. margin. Preferences. right; } var my. Y 1 = my. Page. margin. Preferences. top; var my. X 2 = my. Page. Width - my. X 2; var my. Y 2 = my. Page. Height - my. Page. margin. Preferences. bottom; return [my. Y 1, my. X 1, my. Y 2, my. X 2]; }

//Create a new document. var my. Document = app. documents. add(); //Set the measurement //Create a new document. var my. Document = app. documents. add(); //Set the measurement units and ruler origin. my. Document. view. Preferences. horizontal. Measurement. Units = Measurement. Units. points; my. Document. view. Preferences. vertical. Measurement. Units = Measurement. Units. points; my. Document. view. Preferences. ruler. Origin = Ruler. Origin. page. Origin; //Get a reference to the first master spread. var my. Master. Spread = my. Document. master. Spreads. item(0); //Get a reference to the margin preferences of the first page in the master spread. var my. Margin. Preferences = my. Master. Spread. pages. item(0). margin. Preferences; //Now set up the page margins and columns. my. Margin. Preferences. left = 84; my. Margin. Preferences. top = 70; my. Margin. Preferences. right = 70;

my. Margin. Preferences. bottom = 78; my. Margin. Preferences. column. Count = 3; my. my. Margin. Preferences. bottom = 78; my. Margin. Preferences. column. Count = 3; my. Margin. Preferences. column. Gutter = 14; //Page margins and columns for the right-hand page. var my. Margin. Preferences = my. Master. Spread. pages. item(1). margin. Preferences; my. Margin. Preferences. left = 84; my. Margin. Preferences. top = 70; my. Margin. Preferences. right = 70; my. Margin. Preferences. bottom = 78; my. Margin. Preferences. column. Count = 3; my. Margin. Preferences. column. Gutter = 14;

Adding master text frames Adding master text frames

var my. Left. Page = my. Master. Spread. pages. item(0); var my. Right. Page var my. Left. Page = my. Master. Spread. pages. item(0); var my. Right. Page = my. Master. Spread. pages. item(1); var my. Left. Text. Frame = my. Left. Page. text. Frames. add(); my. Left. Text. Frame. geometric. Bounds = [70, 714, 528]; my. Left. Text. Frame. text. Frame. Preferences. first. Baseline. Offset = First. Baseline. leading. Offset; my. Left. Text. Frame. text. Frame. Preferences. text. Column. Count = 3; my. Left. Text. Frame. text. Frame. Preferences. text. Column. Gutter = 14; //Add a label to make the frame easier to find later on. my. Left. Text. Frame. label = "Body. Text. Frame"; var my. Right. Text. Frame = my. Right. Page. text. Frames. add(); my. Right. Text. Frame. geometric. Bounds = [70, 84, 714, 542]; my. Right. Text. Frame. text. Frame. Preferences. first. Baseline. Offset = First. Baseline. leading. Offset; my. Right. Text. Frame. text. Frame. Preferences. text. Column. Count = 3; my. Right. Text. Frame. text. Frame. Preferences. text. Column. Gutter = 14; //Add a label to make the frame easier to find later on. my. Right. Text. Frame. label = "Body. Text. Frame"; //Link the two frames using the next. Text. Frame property. my. Left. Text. Frame. next. Text. Frame = my. Right. Text. Frame;

Adding and applying a paragraph style Adding and applying a paragraph style

var my. Paragraph. Style = my. Document. paragraph. Styles. item( var my. Paragraph. Style = my. Document. paragraph. Styles. item("Heading 1"); try {var my. Name = my. Paragraph. Style. name; } catch (my. Error){ //The paragraph style did not exist, so create it. my. Paragraph. Style = my. Document. paragraph. Styles. add({name: "Heading 1"}); } //We'll need to create a color. Check to see if the color already exists. var my. Color = my. Document. colors. item("Red"); try {my. Name = my. Color. name; } catch (my. Error){ //The color did not exist, so create it. my. Color = my. Document. colors. add({name: "Red", model: Color. Model. process, color. Value: [0, 100, 0]}); }

Placing a text file //Display a standard open file dialog box var my. Text. Placing a text file //Display a standard open file dialog box var my. Text. File = File. open. Dialog("Choose a text file"); //If a text file was selected //place the text file at the first insertion //point after the headline. if((my. Text. File != "")&&(my. Text. File != null)){ my. Text. Frame. insertion. Points. item(1). place(my. Text. File); }

Placing a graphic var my. Graphic. File = File. open. Dialog( Placing a graphic var my. Graphic. File = File. open. Dialog("Choose a graphic file"); //If a graphic file was selected, and if you didn't press Cancel, //place the graphic file on the page. if((my. Graphic. File != "")&&(my. Graphic. File != null)){ var my. Graphic = my. Document. pages. item(0). place(my. Graphic. File); //Since you can place multiple graphics at once, the place method //returns an array. To get the graphic you placed, get the first //item in the array (Java. Script arrays start with item 0). my. Graphic = my. Graphic[0]; //Create an object style to apply to the graphic frame. var my. Object. Style = my. Document. object. Styles. item("Graphic. Frame"); try { var my. Name = my. Object. Style. name; } catch (my. Error){ //The object style did not exist, so create it. my. Object. Style = my. Document. object. Styles. add({name: "Graphic. Frame"}); }

my. Object. Style. enable. Stroke = true; my. Object. Style. stroke. Weight = 3; my. Object. Style. enable. Stroke = true; my. Object. Style. stroke. Weight = 3; my. Object. Style. stroke. Type = my. Document. stroke. Styles. item("Solid"); my. Object. Style. stroke. Color = my. Document. colors. item("Red"); //The frame containing the graphic is the parent of the graphic. var my. Frame = my. Graphic. parent; my. Frame. apply. Object. Style(my. Object. Style, true); //Resize the frame to a specific size. my. Frame. geometric. Bounds = [0, 0, 144]; my. Frame. fit(Fit. Options. proportionally); //Next, fit frame to the resized graphic. my. Frame. fit(Fit. Options. frame. To. Content); var my. Bounds = my. Frame. geometric. Bounds; var my. Graphic. Width = my. Bounds[3]-my. Bounds[1]; Adobe In. Design CS 4 Scripting Tutorial Constructing a document 43 //Move the graphic frame. var my. Page. Width = my. Document. document. Preferences. page. Width; var my. Top. Margin = my. Document. pages. item(0). margin. Preferences. top; my. Frame. move([my. Page. Width-my. Graphic. Width, my. Top. Margin]); //Apply a text wrap to the graphic frame. my. Frame. text. Wrap. Preferences. text. Wrap. Type = Text. Wrap. Types. bounding. Box. Text. Wrap; my. Frame. text. Wrap. Preferences. text. Wrap. Offset = [24, 12, 24, 12];

Примеры Примеры

ХМL Рареr Sресification (ХРS) • Windows Vista автоматически создает документ XPS при каждой печати ХМL Рареr Sресification (ХРS) • Windows Vista автоматически создает документ XPS при каждой печати из приложения. • Файл, используемый подсистемой печати, идентичен документу XPS. Таким образом, преобразовывать данные при их передаче с ПК на принтер с поддержкой XPS не нужно. Это может позволить производить печать в режиме WYSIWYG ( «что видишь, то и получаешь» ), а также существенно повышает точность передачи цветов и скорость печати.

С поддержкой XPS Без поддержки XPS С поддержкой XPS Без поддержки XPS

Package! Publish! Print! Brian Adelberg Digital Document Solutions Software Development Lead Microsoft Corporation Package! Publish! Print! Brian Adelberg Digital Document Solutions Software Development Lead Microsoft Corporation

Session Outline • Printing – Printer Pipeline – Asynchronous Printing Notification • Packaging – Session Outline • Printing – Printer Pipeline – Asynchronous Printing Notification • Packaging – File Format Definitions – Developer Scenarios – Package Overview • Publishing – XPS – new Publishing Format – Developer Scenarios – XPS Overview

Session Goals • Demonstrate new technologies in. NET 3. 0 that deliver new ways Session Goals • Demonstrate new technologies in. NET 3. 0 that deliver new ways to distribute data • Explore these technologies and show they apply to future products • Brief technical overview of the new technologies

Printing Traditional Data Distribution Printing Traditional Data Distribution

Packaging Application Data Packaging Application Data

Electronic Publishing Electronic Publishing

Printing • Print Filter Pipeline • Asynchronous UI Notification Printing • Print Filter Pipeline • Asynchronous UI Notification

Print Filter Pipeline • New print driver model in Window Vista • XPS Document Print Filter Pipeline • New print driver model in Window Vista • XPS Document spool file – Quality – Archiving – Easy to interpretation • Extensible – Provide clear interfaces for plug-ins – Third parties can improve print quality • Flexible • Compatibility with Win 32 and. NET 3. 0 applications

XPSDrv Filter Pipeline Architecture Win 32 App . NET 3. 0 App Filter Pipeline XPSDrv Filter Pipeline Architecture Win 32 App . NET 3. 0 App Filter Pipeline Config Module/ Plug-in Conversion Render Module Version 3 Driver Application Process Spooler Process Filter Pipeline Manager Filter 1 FP Config XML XPS Filter N Property Bag Filter Pipeline Process

Asynchronous UI Notification • • • Bi-directional Data agnostic Extensible More Control Works across Asynchronous UI Notification • • • Bi-directional Data agnostic Extensible More Control Works across machine boundaries It is asynchronous

Asynchronous Notification Print Spooler service Application Reply Notification Printing component Asynchronous Notification Print Spooler service Application Reply Notification Printing component

Printing Developer Scenarios • • • Print Preview Color Correction Archiving Legal Compliance Print Printing Developer Scenarios • • • Print Preview Color Correction Archiving Legal Compliance Print Monitoring and Management

Packaging • Provides foundation of a file format – Described in the Open Packaging Packaging • Provides foundation of a file format – Described in the Open Packaging Conventions Specification v 0. 9 – Usable by any application – Multiple implementations underway • XPS Document • Office 2007 Open XML formats

More than just Zip • • Allows for related collections of files Provides means More than just Zip • • Allows for related collections of files Provides means to identify file types Provides Digital Signing Provides a basis for Rights Management

Custom File Formats • Data can be logically separated into files • Relationship tree Custom File Formats • Data can be logically separated into files • Relationship tree organizes data • Content Types identify data types

Custom File Formats • Take advantage of common package services – E. g. core Custom File Formats • Take advantage of common package services – E. g. core properties, digital signatures • Packages can contain multiple formats • Interleaving provides simultaneous production and consumption

XML Paper Specification (XPS) • Interoperability of independently created software and hardware systems. • XML Paper Specification (XPS) • Interoperability of independently created software and hardware systems. • Usable by any application • Human Readable • Can be developed with access to common PKZIP and XML libraries

Developer Scenarios • Any. NET 3. 0 Visual tree can be serialized as XPS Developer Scenarios • Any. NET 3. 0 Visual tree can be serialized as XPS • Any application that can print can generate Xps using the Xps Document Writer • Packaging can be used to generate multiformat documents

Xps Overview Xps Overview

Fixed Page Glyphs Paths Text Image Brush Gradient Brush Fixed Page Glyphs Paths Text Image Brush Gradient Brush

Conclusions • Printing-Traditional means to distribute data – We empower developers by allowing more Conclusions • Printing-Traditional means to distribute data – We empower developers by allowing more hooks into the printing process. – Other Developers can cooperatively extend printing functionality – Allow better user experience by providing better methods to communicate with the driver • Packaging – Improve on traditional methods of electronic distribution – Relationships allow for file association – Digital Signatures and Rights Management improve security – File Content types allow for type identification for easier consumption • Publishing – XPS provides easy way to electronically distribute paginated data – Wide distribution of viewing software (XPS Viewer ) – Ease of production with. NET 3. 0 and legacy applications] – Open specification makes XPS available to everyone

Using Xps Common Scenarios in Xps Using Xps Common Scenarios in Xps

Overview • • Printing Loading Serializing Manipulating Overview • • Printing Loading Serializing Manipulating

Session Goals • Outline Common Scenarios • Highlight Developer Choices • Warn of Common Session Goals • Outline Common Scenarios • Highlight Developer Choices • Warn of Common Mistakes

Printing Print. Dialog Xps. Document. Writer Simple Controlled/Advanced Synchronous Asynchronous Works in Partial Trust Printing Print. Dialog Xps. Document. Writer Simple Controlled/Advanced Synchronous Asynchronous Works in Partial Trust Special Case for Partial Trust No Access to Print Tickets

Print Queue • • • Entry point to advanced printing Can be accessed from Print Queue • • • Entry point to advanced printing Can be accessed from the Print Dialog Access to Print Capabilities Access to Status Access to default Print Ticket

Asynchronous Printing • Progress call backs • Cancel call backs • Completion callbacks Asynchronous Printing • Progress call backs • Cancel call backs • Completion callbacks

Print Ticket • • • Reading user settings from Print Tickets Associating print tickets Print Ticket • • • Reading user settings from Print Tickets Associating print tickets during printing Acquiring default Print tickets No Print Ticket in Partial Trust De-serialization does not maintain print tickets

Orientation and Layout • Objects may need to be translated to fit in the Orientation and Layout • Objects may need to be translated to fit in the visible area. • XPS Serialization does not re-layout based on orientation • The drawing is clipped to the union of the viewable area and the rectangle defined by the fixed page size. • Some Options – Transform the Fixed Page – Re-Layout the Fixed Page

Loading Xps • Deferred Loading • Using the Package Store • Using Xaml Parser Loading Xps • Deferred Loading • Using the Package Store • Using Xaml Parser

Deferred Loading • Documents and Pages are loaded on access • The Fixed Class Deferred Loading • Documents and Pages are loaded on access • The Fixed Class maintain only weak references

Package Store • The Package Store prevents the need to continually re-open the Package Package Store • The Package Store prevents the need to continually re-open the Package to access the internal parts. • Keep documents open until though displaying them. • Creating an Xps Document with a stream requires the user to manage the Package Store • Loading Xps Documents with out the package in the Package store works but is very slow.

Serialization • • Write once “Fixed” content Fonts are sub-set Some Fonts are restricted Serialization • • Write once “Fixed” content Fonts are sub-set Some Fonts are restricted Documents can be interleaved for simultaneous production and consumption

Font Subsetting • All the needed fonts are stored in the document. • Only Font Subsetting • All the needed fonts are stored in the document. • Only the needed glyphs are stored in the fonts. • Printing might need different levels of granularity on sub-setting

Restricted Fonts Licensing Right Intent Installable embedding Restricted license embedding – Relationship Preview and Restricted Fonts Licensing Right Intent Installable embedding Restricted license embedding – Relationship Preview and print embedding - Obfuscated Editable embedding No subsetting Bitmap embedding only – glyphs converted to images

Interleaving • Triggered by opening document with Write access. • Used for simultaneous generation Interleaving • Triggered by opening document with Write access. • Used for simultaneous generation and consumption. • “Image Last” option designed for Web consumption

Processing Xps Documents • • Displaying Signing Merging Generating Thumbnails Processing Xps Documents • • Displaying Signing Merging Generating Thumbnails

Displaying Xps Components • Simple – Document. Viewer • Pages are Visuals that can Displaying Xps Components • Simple – Document. Viewer • Pages are Visuals that can be displayed through visual brushes

Signing • • Acquiring a certificate Iterating the Signature Definitions Effectively using Is. Signable Signing • • Acquiring a certificate Iterating the Signature Definitions Effectively using Is. Signable Testing if a signature is valid

Merging • New documents can be created from other documents • This technique only Merging • New documents can be created from other documents • This technique only works if the source documents are serialized (not formed in memory)

Generating Thumbnails • Create a bitmap of a page by render to target • Generating Thumbnails • Create a bitmap of a page by render to target • Encode the bitmap to a jpeg using encoders • Write the stream to an Xps Thumbnail © 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Документы XPS • Поддержка документов XPS в Microsoft Windows позволяет преобразовать любое отображаемое на Документы XPS • Поддержка документов XPS в Microsoft Windows позволяет преобразовать любое отображаемое на экране содержимое в документ, который легко просмотреть и распечатать, в котором можно осуществлять полнотекстовый поиск и который можно надежно защитить, используя технологии управления правами и цифровых подписей. • Документы XPS очень просто создать, они имеют фиксированный формат и могут быть разбиты на страницы. Эти документы могут быть созданы с помощью любого приложения и открыты в Microsoft Internet Explorer или любом другом веб-обозревателе (если в нем включена поддержка модуля просмотра XPS).

Документ XPS • постраничное представление содержимого документа в том виде, в котором обычно отправляется Документ XPS • постраничное представление содержимого документа в том виде, в котором обычно отправляется на печать. • документы XPS не могут содержать сценарии и макросы. Это делает формат XPS безопасным для обмена информацией и архивирования.

Документ XPS Microsoft Office 2007 реализована встроенная поддержка средств публикации • Сохранять непосредственно из Документ XPS Microsoft Office 2007 реализована встроенная поддержка средств публикации • Сохранять непосредственно из приложений Office 2007 • Набор разрешений на чтение, печать или просмотр документа, созданного в приложениях Microsoft Office, наследуется публикуемым документом XPS. Как только к документу будет открыт совместный доступ, модуль просмотра документов XPS активирует эти разрешения. • Подписывать, что гарантирует их целостность на протяжении всего цикла документооборота

Документ XPS • Применение одного формата для печати и создания документов обеспечивает точный вывод Документ XPS • Применение одного формата для печати и создания документов обеспечивает точный вывод на печать за счет сокращения или даже полного устранения потребности в преобразовании графических данных и цветовых пространств, которое обычно выполняется в процессе печати. • Печатается с повторным использованием ресурса, т. е. подсистема печати обрабатывает изображение (например, эмблему компании или насыщенный графикой фон для презентации Power. Point) только один раз, даже если оно присутствует на нескольких страницах.

Advancement of Structured Information Standards (OASIS) Adobe PDF( Portable Document Format-Adobe) версии 1. 5, Advancement of Structured Information Standards (OASIS) Adobe PDF( Portable Document Format-Adobe) версии 1. 5, 1. 7, хранения архивов (PDF/A) обмена информацией (PDF/X), проектной документации (PDF/E), универсального доступа (PDF/UA)- Инструмент- Acrobat Professional

OASIS Microsoft-Sun • Open XML (OOXML) • Open Document Format (ODF) версии 1. 1. OASIS Microsoft-Sun • Open XML (OOXML) • Open Document Format (ODF) версии 1. 1.

XPS преследует те же цели, что и PDF: • отображение документа именно в том XPS преследует те же цели, что и PDF: • отображение документа именно в том виде, в каком он был создан, независимо от ПО, установленного на компьютере. • не требует дополнительных компонентов системы, в частности, шрифтов, и в то же время дает разработчику уверенность в том, что документы отобразятся у клиента именно так, как было задумано, и, к тому же, копирование или изменение данных клиентом невозможно.

Создание Создание

Пакетная модель XPS. • В среде XPS пакет - это логическая сущность, выступающая как Пакетная модель XPS. • В среде XPS пакет - это логическая сущность, выступающая как контейнер для компонентов файлов. Эти компоненты называются частями, и каждая часть определена именем и типом содержимого. Части могут содержать ссылки на другие части пакета или на внешние ресурсы.

Пакетная модель XPS. • Пакетная модель XPS предоставляет механизм более высокого уровня для описания Пакетная модель XPS. • Пакетная модель XPS предоставляет механизм более высокого уровня для описания этих ссылок, называемых связями, что обеспечивает прямую доступность ссылок без необходимости поиска в содержимом определенном части. Пакет – это логическое представление данных для сохранения.

Физический формат XPS. • Пакетная модель может быть сопоставлена с реальной сущностью (называемой физическим Физический формат XPS. • Пакетная модель может быть сопоставлена с реальной сущностью (называемой физическим форматом). Физический формат может быть чем угодно: файлом, архивом (например, ZIP-файлом) или различными видами транспорта (например, сетевыми протоколами).

 • • Open Document Format (ODF) версии 1. 1. Open. Office Document Image • • Open Document Format (ODF) версии 1. 1. Open. Office Document Image Format-Microsoft Open XML (OOXML) Office 12

Физический формат XPS. • Фактически, один пакет XPS может содержать выражения в различных физических Физический формат XPS. • Фактически, один пакет XPS может содержать выражения в различных физических форматах. Под физическим форматом XPS в Windows Vista™ понимается ZIP-файл.

Метаданные XPS. • Метаданные пакета XPS описывают содержимое и использование и доступны (вместе со Метаданные XPS. • Метаданные пакета XPS описывают содержимое и использование и доступны (вместе со структурой пакета) через API пакетов XPS.

Метаданные XPS. • Кроме того, технологии XPS обеспечивают строго определенные средства для включения цифровой Метаданные XPS. • Кроме того, технологии XPS обеспечивают строго определенные средства для включения цифровой подписи и применения метаданных и сведений управления цифровыми правами. Эти метаданные являются полностью расширяемыми и могут использоваться для включения таких элементов, как информация в заметках и эскизах.

Документ XPS • Документ XPS – это особая реализация пакета XPS, позволяющая решать задачи Документ XPS • Документ XPS – это особая реализация пакета XPS, позволяющая решать задачи информационных работников по распространению, архивированию, отображению и обработке документов. Документ XPS выражается независимым от приложения способом, что обеспечивает возможность просмотра и печати документа без необходимости использования приложения, в котором он был создан.

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

 • В рамках поддержки техпроцесса на базе XPS — от компоновки страниц до • В рамках поддержки техпроцесса на базе XPS — от компоновки страниц до совместимых с XPS печатных устройств. 20 лет назад компания разработала технологию спуска полос для файлов Post. Script, первой предложила решение для PDF-файлов, а теперь реализовала спуск полос и для XPS. Программное ядро Ultimate XPS Imposition Engine будет демонстрироваться в составе анонсируемой на выставке системы On Demand 6. 0 (интеграция в ПО Impostrip, Book Stacker и Card Stacker) и призвано оптимизировать и автоматизировать цифровую печать на базе формата XPS. Ultimate XPS Imposition Engine планируется поставлять по OEM-соглашениям: разработка Ultimate не использует существующих лицензионных библиотек. По мнению президента и генерального директора Ultimate Technographics Дэвида Уотсона, перспективность XPS обусловлена доминирующими позициями Microsoft на рынке офисных компьютеров: печатные устройства можно удешевить за счёт отказа от встроенных RIP.

 «Спринтеры «Спринтеры" Xerox Выпущенные компанией Xerox монохромные многофункциональные аппараты моделей Work. Centre 5632, 5638, 5645, 5655, 5665, 5675 и 5687 имеют скорость работы 32, 38, 45, 55, 65, 75 и 87 стр. /минуту. МФУ имеют усовершенствованный контроллер печати, расширенные возможности печати, сканирования и финишной обработки, у них увеличен запас бумаги во входных лотках (до 8700 листов). Технология Xerox Extensible Interface Platform (EIP) поддерживается всеми моделями новой серии и позволяет работать с сетевыми ресурсами, используя пользовательский интерфейс аппарата. Так, благодаря EIP, пользователи могут найти и отпечатать документы из сетевого ресурса, например, из Microsoft Share Point, или из архива, хранящегося на сервере компании, без какого-либо участия компьютера, напрямую с сенсорного экрана устройства. Пользователи также могут просматривать, удалять или повторно печатать документы через Web-интерфейс. Серия Work. Centre 56 xx поддерживает формат документа XML Paper Specification (XPS), который используется компанией Microsoft в Office 2007.

Альтернатива PDF от Microsoft станет стандартом В организации ECMA International сформирован технический комитет по Альтернатива PDF от Microsoft станет стандартом В организации ECMA International сформирован технический комитет по разработке стандарта на базе созданной в Microsoft спецификации XML Paper Specification, которая задумывалась в качестве конкурента Adobe PDF. XPS - один из форматов файлов, поддерживаемых пакетом Office 2007, и на сегодня Microsoft - единственная, кто разработал реализацию спецификации. В корпорации собирались обеспечить в своем офисном пакете и встроенную поддержку PDF, однако этому воспрепятствовала Adobe. Существует, однако, дополнение, с помощью которого можно получить поддержку PDF в Office 2007. Противники стандартизации XPS, в частности, руководитель IBM по открытому коду и стандартам Боб Сьютор, указывают, что стандарт ECMA обязан быть совместимым с реализацией XPS от Microsoft, что противоречит идее открытости, коллегиальности и независимости его разработки.

System. Windows. Xps Namespace Provides classes that write XPS documents to a data store System. Windows. Xps Namespace Provides classes that write XPS documents to a data store or print queue. The Xps. Document. Writer class provides the Write and Write. Async methods that output XPS documents to a data store or print queue. Separate groups of write methods are provided for different content types including Document. Paginator, Visual, Fixed. Page, Fixed. Document, and Fixed. Document. Sequence. The Xps. Document. Writer methods enable you to also include a Print. Ticket with the document, plus pass additional information to the handlers of the Writing. Completed, Writing. Progress. Changed, and Writing. Print. Ticket. Required events.

Creating an XPS document in memory via the DOM XPS documents use the Open Creating an XPS document in memory via the DOM XPS documents use the Open Packaging Conventions, which are a shared description of how content can be organized within a package.

Basic structure of a Open Packaging Conventions document My. Filename. xps (zip archive) Resources Basic structure of a Open Packaging Conventions document My. Filename. xps (zip archive) Resources [filename]. [ext] Documents 1 Pages _rels 1. fpage Fixed. Document. fdoc _rels Fixed. Document. Sequence. fdseq [Content_Types]. xml

<Fixed. Page Width=

//an XPS document is actually a package (ZIP) of an XPS document and associated //an XPS document is actually a package (ZIP) of an XPS document and associated resources //so, create a new package stream. using (Package pack = Package. Open(xps. By. XAMLFilename)) { //create a new XPS document, this is the actual document within the package xps. Document xps. Doc = new Xps. Document(pack); //create a document sequence writer. A Xps. Document can contain multiple documents Xps. Fixed. Document. Sequence. Writer xps. Doc. Seq. Writer = xps. Doc. Add. Fixed. Document. Sequence(); //create a document writer. This creates a new document in the sequence. IXps. Fixed. Document. Writer xps. Doc. Writer = xps. Doc. Seq. Writer. Add. Fixed. Document(); //create a page writer, because a document consists of multiple pages Xps. Fixed. Page. Writer xps. Page. Writer = xps. Doc. Writer. Add. Fixed. Page(); //write resources to the page (such as fonts etc) string font. Resource = Embed. Font(xps. Page. Writer); string image. Resource = Embed. Image(xps. Page. Writer); //write XML into the page Xml. Writer xml. Writer = xps. Page. Writer. Xml. Writer; Write. Xml(xml. Writer, font. Resource, image. Resource); //commit the changes made to the XPS contents xps. Page. Writer. Commit(); xps. Doc. Seq. Writer. Commit(); //close the XPS document xps. Doc. Close();

Xps. Document doc; ms = new Memory. Stream(); Uri Document. Uri = new Uri( Xps. Document doc; ms = new Memory. Stream(); Uri Document. Uri = new Uri("pack: //document. xps"); Package. Store. Add. Package(Document. Uri, p); doc = new Xps. Document(p, Compression. Option. Not. Compressed, Document. Uri. Absolute. Uri); Fixed. Document fd = new Fixed. Document(); Page. Content pc = new Page. Content(); fd. Pages. Add(pc); Fixed. Page fp = new Fixed. Page(); ((IAdd. Child)pc). Add. Child(fp); Text. Block tb = new Text. Block(); tb. Text = "Page one"; fp. Children. Add(tb); Xps. Document. Writer dw = Xps. Document. Create. Xps. Document. Writer(doc); dw. Write(fd);

Loading Xps from File, Memory. Stream Xps. Document document = new Xps. Document(filename, File. Loading Xps from File, Memory. Stream Xps. Document document = new Xps. Document(filename, File. Access. Read, Compression. Option. Not. Compressed); Fixed. Document. Sequence fixed. Document. Sequence = document. Get. Fixed. Document. Sequence(); //To view in the Doc. Viewer doc. Viewer. Document = fixed. Document. Sequence as IDocument. Paginator. Source;

Memory. Stream xps. Stream = new Memory. Stream(xps. Byte); using (Package package = Package. Memory. Stream xps. Stream = new Memory. Stream(xps. Byte); using (Package package = Package. Open(xps. Stream)) //Remember to create URI for the package Uri package. Uri = new Uri(package. Uri. String); //Need to add the Package to the Package. Store. Add. Package(package. Uri, package); //Create instance of Xps. Document document = new Xps. Document(package, Compression. Options. Maximu. Compression, package. Uri. String); //Do the operation on document here //Here I am viewing the document in the Doc. Viewer Fixed. Document. Sequence fixed. Document. Sequence = document. Get. Fixed. Document. Sequence(); //To view in the Doc. Viewer doc. Viewer. Document = fixed. Document. Sequence as IDocument. Paginator. Source; //Remember to keep the Package object in Package. Store until all operations complete on document. //Remove the package from store Package. Store. Remove. Package(package. Uri); doc. Close();

private string Embed. Font(IXps. Fixed. Page. Writer xps. Page. Writer) { Xps. Font font private string Embed. Font(IXps. Fixed. Page. Writer xps. Page. Writer) { Xps. Font font = xps. Page. Writer. Add. Font(); Write. Obfuscated. Stream(font. Uri. To. String(), font. Get. Stream(), "courier. ttf"); font. Commit(); return font. Uri. To. String(); } private string Embed. Image(IXps. Fixed. Page. Writer xps. Page. Writer) { Xps. Image image = xps. Page. Writer. Add. Image(Xps. Image. Type. Png. Image. Type); Write. To. Stream(image. Get. Stream(), "mylogo. png"); image. Commit(); return image. Uri. To. String(); }

private void Write. Xml(Xml. Writer xml. Writer, string font. Resource, string image. Resource) { private void Write. Xml(Xml. Writer xml. Writer, string font. Resource, string image. Resource) { //an XPS page starts with a fixedpage tag xml. Writer. Write. Start. Element("Fixed. Page"); xml. Writer. Write. Attribute. String("Width", "816"); xml. Writer. Write. Attribute. String("Height", "1056"); xml. Writer. Write. Attribute. String("xmlns", "http: //schemas. microsoft. com/xps/2005/06"); xml. Writer. Write. Attribute. String("xml: lang", "en-US"); //add an image to the XPS document xml. Writer. Write. Start. Element("Path"); xml. Writer. Write. Start. Element("Path. Fill"); xml. Writer. Write. Start. Element("Image. Brush"); xml. Writer. Write. Attribute. String("Image. Source", image. Resource); xml. Writer. Write. Attribute. String("Tile. Mode", "None"); xml. Writer. Write. Attribute. String("Viewbox", "0, 0, 250, 211"); xml. Writer. Write. Attribute. String("Viewbox. Units", "Absolute"); xml. Writer. Write. Attribute. String("Viewport", "650, 25, 105"); //"25, 250, 210"); xml. Writer. Write. Attribute. String("Viewport. Units", "Absolute"); xml. Writer. Write. End. Element(); //Image. Brush xml. Writer. Write. End. Element(); //Path. Fill

xml. Writer. Write. Start. Element( xml. Writer. Write. Start. Element("Path. Data"); xml. Writer. Write. Start. Element("Path. Geometry"); xml. Writer. Write. Start. Element("Path. Figure"); xml. Writer. Write. Attribute. String("Start. Point", "650, 25"); xml. Writer. Write. Attribute. String("Is. Closed", "true"); xml. Writer. Write. Start. Element("Poly. Line. Segment"); xml. Writer. Write. Attribute. String("Points", "925, 25 925, 235 650, 235"); xml. Writer. Write. End. Element(); //Poly. Line. Segment xml. Writer. Write. End. Element(); //Path. Figure xml. Writer. Write. End. Element(); //Path. Geomerty xml. Writer. Write. End. Element(); //Path. Data xml. Writer. Write. End. Element(); //Path //write a simple string to the XPS document xml. Writer. Write. Start. Element("Glyphs"); xml. Writer. Write. Attribute. String("Fill", "#ff 000000"); xml. Writer. Write. Attribute. String("Font. Uri", font. Resource); xml. Writer. Write. Attribute. String("Font. Rendering. Em. Size", "16"); xml. Writer. Write. Attribute. String("Origin. X", "220"); xml. Writer. Write. Attribute. String("Origin. Y", "100"); xml. Writer. Write. Attribute. String("Style. Simulations", "Bold. Italic. Simulation"); xml. Writer. Write. Attribute. String("Unicode. String", "HELLO WORLD FROM XPS!"); xml. Writer. Write. End. Element(); //Glyphs xml. Writer. Write. End. Element(); //Fixed. Page }

XPS Document Parts and relationships Key XPS Document parts Fixed. Document. Sequence – Root XPS Document Parts and relationships Key XPS Document parts Fixed. Document. Sequence – Root of the document Fixed. Document – Document XML markup Fixed. Page – Page XML markup Font – Embedded font Image – Embedded image Thumbnail – Page thumbnail images Print. Ticket – Printer settings for page/document Document. Structure – Semantic structure of document Story. Fragments – Semantic structure of page Key XPS Document relationships Start. Part – Points to the Fixed. Document. Seq. Required. Resource – Image/font needed to render page 140 Print. Ticket – Printer settings

XPS Document Format 141 XPS Document Format 141

XPS Documents Solution development APIs Supersede package APIs for XPS Document solutions Create, consume, XPS Documents Solution development APIs Supersede package APIs for XPS Document solutions Create, consume, and service XPS Documents Tailored to the specific needs of XPS Documents API is in System. Windows. Xps. Packaging namespace Classes of interest Xps. Document IDocument. Sequence. Reader IDocument. Sequence. Writer IFixed. Document. Reader IFixed. Document. Writer IFixed. Page. Reader IFixed. Page. Writer 142

XPS Documents API functionality Document manipulation Add/remove documents to document sequence and pages to XPS Documents API functionality Document manipulation Add/remove documents to document sequence and pages to documents Retrieve or set core properties Retrieve or set thumbnails Add page content E. g. colors, fonts, images, resource dictionaries Retrieve/Set Print. Tickets (print job control XML) Digital Signatures Automatically sign according to XPS Document signing policy Specify co-signature requirements 143

XPS Document Extensibility XPS Documents may be extended through the use of markup compatibility XPS Document Extensibility XPS Documents may be extended through the use of markup compatibility Identical to Windows Presentation Foundation (XAML) markup compatibility Designed to support backward and forward compatibility The only proper way to add new features intermixed with XPS Document markup XPS Viewer will reject files with unknown markup 144

XPS Document Markup compatibility XML parts are processed for compatibility during loading Process unknown XPS Document Markup compatibility XML parts are processed for compatibility during loading Process unknown XML namespaces, elements, and attributes By default, unknown elements/attributes trigger errors Ignorable suppresses errors triggered by elements/attributes in unknown namespaces Process. Content determines if markup nested within an ignored element should be processed Alternate. Content selects a Choice based on Required namespaces Must. Understand triggers an immediate error when an unknown namespace is specified 145

XPS Document Markup compatibility sample <Fixed. Page Height= XPS Document Markup compatibility sample 146

Определить размер выделения var my. Bounds, my. X 1, my. Y 1, my. X Определить размер выделения var my. Bounds, my. X 1, my. Y 1, my. X 2, my. Y 2, my. Object; my. Bounds = my. Document. selection[0]. visible. Bounds; for(var my. Counter = 0; my. Counter < my. Document. selection. length; my. Counter ++){ my. Object = my. Document. selection[my. Counter]; my. Bounds = my. Object. visible. Bounds; //Set up some initial bounding box values. if (my. Counter==0)){ my. X 1 = my. Bounds[1]; my. Y 1 = my. Bounds[0]; my. X 2 = my. Bounds[3]; my. Y 2 = my. Bounds[2]; }

Определить тип объекта if (app. documents. length != 0){ if (app. selection. length > Определить тип объекта if (app. documents. length != 0){ if (app. selection. length > 0){ switch(app. selection[0]. constructor. name){ case "Rectangle": case "Oval": case "Polygon": case "Graphic. Line": case "Group": case "Text. Frame": case "Button": my. Display. Dialog(); break; default: alert("Es ist kein Objekt markiert. "); break; } } else{ alert("Ничего РЅРµ выдел ено"); } } else{ alert("Документ РЅРµ открыт"); }