Линукс и вёрстка газеты (не для профессионалов) +40


Вот вы, например. Вы ведь думаете, что после смерти всё кончается, верно?

— Верно… — откликнулось несколько голосов в зале. [...]

— И ток не течет по воздуху. Верно?

— Верно…

— И без Windows или MacOS невозможно производить допечатную подготовку газеты?


Неверно. С помощью линукса можно, конечно, делать не всё, но гораздо больше, чем вы думаете.


Лет пятнадцать назад рекламное агентство, где я работал, начал поклёвывать жареный петух по поводу нелицензионного ПО. Шеф прикинул возможности и решил, что сможет выкроить из бюджета сумму на покупку пяти лицензий Windows+Office, одной 1С 7.7 и парочки Corel Draw. Работать при этом на 1С должны были 10 рекламных менеджеров, а Windows была совершенно необходима дизайнерам.


У нас был хороший админ; он тоже прикинул возможности, проконсультировался с коллегами и задумался: зачем конкретно менеджерам-продажниками нужна Windows?


С помощью даунгрейда пары файлов dll он сделал из одной Windows XP сервер терминалов, установил туда 1С, а на всех менеджерских машинах установил Убунту с единственным ярлыком на рабочем столе — «Подключиться к серверу». Дальше мысль шефа стала двигаться в сторону «а зачем нам вообще компьютеры в офисе, если менеджеры могут подключаться к серверу терминалов прямо из дома?», забрезжили впереди большие перспективы.


И зажили бы мы долго и счастливо, но надо было ещё как-то верстать нашу рекламную газету. В Кореле это делать было совершенно невозможно. Изделия Adobe шеф категорически отказался покупать — и не только из-за цен: эта корпорация настучала на все рекламные предприятия нашего города оптом (превентивно настучала, по принципу: раз делаете рекламу, значит инструмент имеется воруете Фотошоп!), и нас в числе прочих вежливо пригласили в прокуратуру показать наши лицензии. Мы лицензии показали, но на Adobe крупно обиделись и прокуратуру заверили, что никогда никаких дел с продуктами этой корпорации не имели и иметь не собираемся.


Можно было, конечно, купить QuarkXpress или начать осваивать Scribus. Но к этому времени у нас уже сложилась определённая система обработки данных, был некоторый уровень автоматизации. Удобная система хранения рекламных макетов, «правильная» структура данных, описывающих макеты, навели нас на следующую мысль: зачем нам вообще визуальная программа для полиграфической вёрстки? Рекламные макеты — это ведь просто прямоугольники, расположить их рядами и колоннами на газетной странице — голая математика. Зачем здесь человек с мышкой в руке?


Данные


В 1С менеджеры создавали документ «Рекламный макет», в котором в числе прочего были указаны: размеры макета, страница в газете и координаты на странице. Понятно, что тут могло возникать множество коллизий. Которые должен был разрешать главный менеджер.


Ситуация усложнялась особенностями конечной продукции — газеты: там должно быть количество полос (страниц), обязательно кратное четырём. А для некоторых печатных машин — кратное восьми.


Это значит, главный менеджер должен постоянно мониторить количество рекламы и своевременно давать обратную связь клиентам. Если, например, материала к очередному выпуску набралось на 33 полосы, часть рекламных макетов надо будет выкинуть из этого выпуска — перенести на следующий или уменьшить размер, или ещё что-то придумать, и всё это успеть согласовать с клиентом до сдачи газеты в типографию (а не ставить клиентов перед фактом после выпуска).


Визуализация


Чтобы разрешить коллизию — наложение двух макетов — главный менеджер должен увидеть это наложение. Вы скажете, наложение координат проще и надёжнее обнаружить программно. Так оно и есть. Но что программе делать с обнаруженной проблемой? И возникает комбинированный метод: программа, обнаружив наложение, «сбрасывает» макет со страницы и помечает особым образом, а главный менеджер уже просматривает все «сброшенные» макеты и решает, что с ними делать.


Он это делает уже не в 1С, а на веб-страничке, где все миниатюры макетов расположены в точности, как на соответствующей газетной странице (а список «сброшенных» макетов где-нибудь сбоку). Поэтому дальше мы будем называть главного менеджера просто «верстальщиком».


Чтобы макеты отобразились на веб-страничке, верстальщик перед началом вёрстки выгружает данные из 1С и загружает их в Mysql. А потом открывает в браузере адрес localhost/verstka. Или, допустим, летом, когда верстальщик постоянно живёт на даче, адрес вроде #http://nasha-gazeta.ru/verstka/.


На веб-страничке вёрстки, javascript с помощью технологии drag-end-drop позволяет верстальщику двигать миниатюры макетов как мышкой, так и стрелками клавиатуры. После любой остановки макета ajax записывает данные о новых координатах макета в Mysql. После окончания текущей вёрстки верстальщик выгружает новые данные из Mysql и загружает обратно в 1С. После чего менеджеры, работающие с клиентами, могут согласовывать новое состояние макетов. И так несколько раз по кругу, пока все не будут довольны.


В конечном итоге всё согласовано, все макеты размещены; мы полностью сверстали газету «виртуально». Но что мы понесём в типографию?


Полиграфическая вёрстка


Типографии нужен файл postscript или pdf. Если вы когда-нибудь работали в рекламе, вы знаете, как делается файл pdf для типографии: вы нажимаете в программе типа InDesign или Corel Draw меню Файл — Экспорт, выбираете нужный формат и создаёте файл pdf (postscript). Или создаёте тот же файл через меню Файл — Печать. Но что у этого файла печати внутри?


Если в визуальной программе полиграфической вёрстки человек мышкой разместит ряд макетов, взятых с диска своего компьютера, то потом, при экспорте или печати, программа точно так же поместит все эти исходные файлы с нужными координатами в общий файл postscript. То есть конечный файл — это соединённые вместе файлы отдельных макетов, перед каждым из которых стоит пара специальных команд на языке postscript, указывающих координаты и ещё кое-какие детали.


Файл postscript — это обычный текстовый файл с набором данных и инструкций. Примерно как файл html, только размеры больше. Вы можете открыть этот файл в текстовом редакторе, найти там инструкцию 150 250 moveto, заменить там число 250 на 300, и какой-то элемент при печати сместится на 50. Остаётся, правда, вопрос: сместится на 50 чего и в каком направлении?


В postscript есть несколько не совсем привычных правил: измеряется всё в пунктах — таких условных единицах, которые меньше миллиметров в 2.8346456692913 раза; а точка отсчёта координат расположена в левом нижнем углу страницы (а не в левом верхнем, как вы привыкли).


То есть команда 150 250 moveto, введённая на «чистом листе», означает, что мы передвинулись из левой нижней точки страницы на 53 мм вправо и на 88 мм вверх.


Следующая сложность вытекает из размера полиграфических файлов: мы не можем, конечно, открывать и редактировать в текстовом редакторе файлы печати размером в 100 мегабайт — это было бы очень неудобно. К счастью, макеты можно собрать на одной странице вместе, не помещая всё содержание файла в текст страницы целиком, а с помощью чего-то вроде ссылок — указания путей к файлам и комбинации команд file, run и flush:


%% Процедура вставки файла
/PasteFile { grestore gsave x1 y1 translate
{/f1 f10 (r) file def} stopped {} {f10 run} ifelse
f10 = flush } def

%% Пример применения процедуры вставки файла
/f10 (/home/verstka/shablon/fon_bw.eps) def
/x1 7.7 def /y1 49 def
PasteFile

Таким образом мы получаем практически полный аналог html-файла, в котором тоже обычно содержатся ссылки на изображения, а не сами картинки. К сожалению, этот маленький текстовый файл вёрстки postscript нельзя отдать в типографию, так как связанные с ним файлы макетов хранятся отдельно и в процессе печати к ним (и к файлам шрифтов, кстати, тоже) не будет доступа.


На последнем этапе необходимо соединить всё вместе — внедрить содержимое каждого макета в страницу. Это можно сделать с помощью замечательной программы Ghostscript. Если использовать метод ps2pdf, можно сразу получить из нашего маленького файла конечный pdf для типографии; если типография требует файлы в формате ps, можно программой Ghostscript делать «полный» файл postscript, используя метод ps2ps.


Наша программа полиграфической вёрстки была всего лишь небольшим php-скриптом на веб-сервере. Она генерировала текстовые файлы postscript со ссылками на файлы макетов, используя информацию из базы данных с описанием координат и размеров макетов. Затем она вызывала интерпретатор Ghostscript и создавала файлы, полностью готовые для передачи в типографию. При необходимости так же легко создавался и спуск полос: маленькие текстовые файлы отдельных полос соединялись друг с другом с добавлением инструкций rotate и translate.


Особенности внедрения


Описанная программа вёрстки вроде бы вполне могла работать и под Windows. Но машина с веб-сервером, где всё это происходило, по необходимости должна была быть и файловым сервером: там ведь собираются вместе и хранятся все файлы макетов, к которым требуется доступ большому числу людей — и дизайнерам, и менеджерам — например, чтобы скопировать туда готовый макет, полученный от клиента, или наоборот, распечатать макет и отправить на согласование.


Но Windows XP обладает одной очень неприятной особенностью — ограничением на количество подключений. В своё время это испортило нам немало крови. В одном случае (с сервером терминалов) наш админ решил эту проблему путём хака Windows XP, в другом (с хранилищем рекламных макетов) — установив линукс. И в каком случае было меньше риска для предприятия?


Основной вывод, который я для себя сделал, — системный администратор малому предприятию совершенно необходим. Он может быть приходящим, это может быть аутсорс от какой-то фирмы, неважно. Главное, чтобы он не боялся линукса. Тогда и вы перестанете его бояться. Я вот перестал. Я как раз писал ту самую программу вёрстки на php и javascript. Начинал на Windows. Но с тех пор как админ под пересадил меня на линукс, о Windows я больше и слышать не хочу — настолько линукс оказался для меня удобен во всех отношениях.


Второй вывод — почти что по ТРИЗ: если вы не можете решить задачу, разделите её на части и разнесите их в пространстве и времени. Рекламное агентство вполне может прожить без узкоспециализированного ПО корпорации Adobe, указав в правилах работы с клиентами: макеты принимаются в формате eps. Если у вас нет готового макета, мы отштампуем вам его своими силами в Кореле. А для вип-клиентов можно использовать тот же аутсорс — поручать изготовление макетов третьим лицам, крутым дизайнерам.


Третий вывод: линукс на современном малом предприятии не приживается не из-за объективных причин — не потому что он слишком сложен или проигрывает в чём-то Windows, а потому что народ офисный в большинстве своём ленив и нелюбопытен. Люди просто не хотят осваивать что-то новое. А магазины услужливо подсовывают им привычные «Окна».


Сейчас в фирме, где я работаю, все менеджеры работают с клиентской базой и продажами через веб — они никак не зависят от операционной системы. Машина с 1С и банк-клиентом одиноко стоит в углу — чисто для бухгалтера. Но линукс только на двух старых клиентских машинах. Потому что при покупке нового компьютера на нём уже стоит Windows. Бухтят на свою ОС при этом все, но по-разному: если сидящие на линуксе не могут толком предъявить ничего, кроме смутного беспокойства, что они «не в мейнстриме», то любители Windows 10 матерятся по совершенно конкретному поводу: они не могут распечатывать файлы на рядом стоящий принтер HP 1100. Но на линукс пересаживаться всё равно никто не хочет.




К сожалению, не доступен сервер mySQL