[Из песочницы] Формат JDF. Автоматизация процессов в полиграфическом производстве
Предыстория
Много лет компании-разработчики специализированного для типографий ПО создавали программные комплексы один мощнее другого и все предлагали автоматизировать процессы с помощью специальных форматов файлов, софта и оборудования. Но загвоздка была в том, что купив печатную машину с поддержкой формата передачи данных от условной компании X, типография была вынуждена покупать у этой же компании X и другое оборудование и программное обеспечение всю свою жизнь.
По этой причине ситуация на рынке сложилась такая, что большинство созданных систем автоматизации не пользовались спросом у типографий.
И тут появляется .jdf и CIP4
И вот в 1999 на помощь печатной индустрии пришёл консорциум CIP4, чьё название расшифровывается как »Cooperation for the Integration of PrePress, Press, PostPress and Process».
Это сообщество разработало новый формат передачи данных о заказе, основываясь на уже существовавшем тогда формате CIP3 (cip3 — файлы настроек офсетной печатной машины).
Разработанный ими формат JDF представляет собой xml структуру, содержащую внутри себя специализированные теги, содержание и атрибуты которых, описывает все (ну или по крайней мере большинство) данных о заказе. Начиная от внутреннего идентификатора (id заказа) до того, какой толщины запечатываемый материал и сколько скрепок какой модификации должно быть на изделии.
Вырезка из .jdf файла
…
Важно для понимания то, что jdf файл несёт в себе информацию о заказе не только для пользователей, но и передаёт настройки непосредственно типографским программным комплексам и производственному оборудованию.
Что стало возможным с внедрением jdf
С момента выхода формата jdf всё более или менее автоматизированное оборудование для типографий стало поддерживать этот общепринятый формат, не говоря уже о программном обеспечении. Создать jdf файл можно как в workflow любого производителя, так и в самописной системе (подробнее об этом в конце статьи).
PrePress. Допечатная подготовка
После того как заказ и его jdf файл создан, он передаётся в отдел допечатной подготовки типографии, где программы спуска полос (раскладывания страниц изделия на печатный лист) предлагают возможность импортировать jdf, взяв все необходимые для себя данные и в 2 клика отправить его на следующий этап.
После отдела допечатной подготовки файл, содержащий ссылки на pdf макеты спусков, готовых к печати попадает на RIP (растровый процессор), который в свою очередь берёт из файла настройки растрирования, заданные при создании jdf и создает растрированные и сепарированные файлы tiff-b, содержание которых проявляется на печатных пластинах на участке CtP (системы Computer to Plate)
Press. Печать
Когда выведенные пластины доставляют на печатную машину, в управляющей ей компьютер уже загружен jdf, который выставляет настройки печати в зависимости от макета.
PostPress. Послепечатная обработка
Тираж отпечатан форматами печатной машины. После просушки листов наступает время резки на готовые форматы и других отделочных операций. Часть оборудования послепечатной обработки (например гильотинные резательные машины) так же умеют воспринимать параметры заказа и настраивать свои параметры под заложенные в заказе значения.
Process
Немаловажная часть информации внутри jdf — это информация о статусах производственных операций и заказа в целом. То есть один файл заменяет виртуальный (либо напечатанный на бумажке) бланк (паспорт) заказа и несёт в себе информацию не только о параметрах изделия, но и отражает информацию о текущем состоянии заказа.
Немного о создании jdf файлов
О том какие данные могут быть отображены в файле jdf рассказывает спецификация формата. На 1268 страницах детально расписаны все возможные тэги, атрибуты и их предназначение.
Также есть замечательный человек Tom Cabanski и его старинный блог. Информации там немного и часть ссылок уже не рабочие, но есть возможность скачать его библиотеку Fluen JDF и упростить с её помощью создание и редактирование jdf файлов многократно.
Генерацию jdf файла при помощи этой библиотеки можно свести к тому, что использовать шаблонный файл, содержащий максимальный набор данных и при помощи методов Fluent JDF редактировать части файла, настраивая его содержание под свои нужды.
Пример кода на C#
public static Ticket JDFGenerate(ProductPart task)
{
InitializeFluentJdf();
Infrastructure.Core.Configuration.Settings.UseCastleWindsor().LogWithNLog().Configure();
FluentJdfLibrary.Settings.ResetToDefaults();
string finishFormat = task.Format.Replace("*", " ");
…….
/*Заказчик*/
ticket.SelectJDFDescendant(Element.CustomerInfo)
.SetAttributeValue("CustomerName", task.CustomerName);
ticket.SelectJDFDescendant(Element.CustomerInfo)
.AddInput(Element.Contact);
ticket.SelectJDFDescendant(Element.Contact)
.AddInput(Element.Company);
ticket.SelectJDFDescendant(Element.Contact)
.SetAttributeValue("OrganizationName", task.CustomerName);
/*Формат изделия*/
string dimentionsStrip = task.Format.Replace("*", " ");
string finalFormat = ConvertDimentions(dimentionsStrip);
ticket.SelectJDFDescendant(Element.StripCellParams)
.SetAttributeValue("TrimSize", finalFormat);
…..
ticket.SelectJDFDescendant(Element.Device)
.SetAttributeValue("DeviceID", jdfMachine);
/*Бумага*/
ticket.SelectJDFDescendant(Element.Media)
.SetAttributeValue("Brand", task.Material.MaterialName);
ticket.SelectJDFDescendant(Element.Media)
.SetAttributeValue("Weight", task.Material.MaterialWeight);
ticket.SelectJDFDescendant(Element.Media)
.SetAttributeValue("Thickness", task.Material.MaterialThickness);
Но увы
Этот формат, который вывел автоматизацию в полиграфическом производстве на новый уровень, на территории РФ используется очень эпизодично. Даже если типография внедряет jdf в свой рабочий процесс, то, скорее всего, делает это только на одном из всех этапов (как правило, это передача настроек печати из отдела допечатной подготовки на печатную машину).
Связано это, вероятно, с необходимостью больших инвестиций в оборудование и ПО и практически полным отсутствием отечественных разработок в этом направлении. Но всё же хочется верить, что у jdf есть будущее в нашей стране.