andrew72ru 21.10.2010 21:03
Есть вопрос! — Печать последовательности чисел в заданных местах листа из Linux
Привет, линуксоидыУ меня к вам несколько необычный вопрос. Причем с предысторией.
Предыстория такова.
У меня на работе (в типографии) есть иногда такая потребность – нумеровать различные бумаги.
Чтобы было понятно — человек заказывает тираж лотерейных, скажем, билетиков, у каждого из них — индивидуальный номер.
Эти номера впечатываются в готовые (но непорезанные) листы А3 формата на обычном струйном принтере. Раньше был матричный, но сдох.
Таким образом, мы имеем А3 лист с 10–ю, скажем, билетами на нем. Номера — 0001 — 9999. Нам надо впечатать в этот лист 10 номеров на определенных местах, и сделать это последовательно, то есть на первом листе номера 0001 — 0010, на втором — 0011 — 0021 и так далее. Или, например, АА001 — ZZ999, что–то в этом духе.
Сейчас все это делается с помощью богомерзского (да еще и пиратского) Corel Draw, потому что он умеет из коробки печатать такого рода последовательности.
При этом у нас во всей конторе есть только четыре винды.
— XP Embeded на управлялке к печатной машине;
— 2000 как сервер терминалов (туда цепляются бухи к 1С);
— XP на компе, который отправляет файлы на ризограф (фееричная китайская машина, которая ставится как принтер, но только под винду, никак иначе. Все жду, когда он сдохнет.)
— И этот долбаный нумератор, на котором XP — только ради корела, а корел — только ради нумерации.
Все остальные — это Ubuntu для менеджеров и Mac`и для дизайнеров и фотовывода.
Я думаю, что держать винду + корел на машинке, которая запускается от силы раз в месяц (у нас нечасты такие заказы) — это как–то неправильно.
Отсюда вопрос
Чем заменить эту связку, как осуществить вывод на печать такого рода последовательных данных? Причем очень желательно на чем–нибудь линуксовом, потому что покупать Mac ради такой машинки (повторюсь, запускается раз в месяц) — это тоже расточительство.

+ 2 -
Я ноль в типографских форматах, но если можно печатать с формата, основанного на plain text или xml, можно в документ вписать XXXX и накидать простой скриптик, к-ый в ищет XXXX и заменяет на нужные числа.
Попробуйте посмотреть в сторону LaTeX'а. Готовое решение, к сожалению, подсказать не могу, но думаю, что скрипт, который будет генерировать содержимое документа, вставляя туда числа, написать не слишком сложно.
С latex будет сложно центрировать цифры. LaTeX все же не для этого, а для больших многостарничных документов.
Вроде есть пакет для абсолютного позиционирования. texpos: https://docs.google.com/viewer?url=http://www.tex.ac.uk/CTAN/macros/latex/contrib/textpos/textpos.pdf
Это и будет классический для UNIX способ. А генерить LaTeX документ просто из любого скрипта.
Это и будет классический для UNIX способ. А генерить LaTeX документ просто из любого скрипта.
Как я это вижу.
1)Создается в inkscape документ со вставленными в нужных местах вместо цифр символами, что-то вроде *****1, *****2 итд.
2)Скриптом меняются на нужные цифры(svg это текстовый формат)
3)Скриптом же конвертиться в pdf(подскажите прогу) и сшивается в один файл.
4)Распечатывается pdf.
Единственное, в чем не уверен, чем можно сконвертить svg в pdf, все остальное точно можно сделать.
1)Создается в inkscape документ со вставленными в нужных местах вместо цифр символами, что-то вроде *****1, *****2 итд.
2)Скриптом меняются на нужные цифры(svg это текстовый формат)
3)Скриптом же конвертиться в pdf(подскажите прогу) и сшивается в один файл.
4)Распечатывается pdf.
Единственное, в чем не уверен, чем можно сконвертить svg в pdf, все остальное точно можно сделать.
У меня нету инкскэйп и не горю особым желанием его ставить, но если кто-то покажет мне готовый SVG с последовательностью символов вместо нумерации, я смогу даже накидать perl-скрипт для нумерации, ага.
если будете копать в этом направлении, то inkscape вам все равно понадобится. тк "билетики" у вас каждый раз разных размеров, или я не прав? и раз уж вы подняли для подобной задачи такую бочку с "навозоммедом", как винда и корелдро, то и инкскейп проблемой не станет
А ведь и правда, есть же inkscape… Надо посмотреть в его сторону, может он то же самое умеет делать прямо так, безо всяких.
С другой стороны можно и скрипт написать, ничего такого.
Спасибо за идею.
С другой стороны можно и скрипт написать, ничего такого.
Спасибо за идею.
Попробуйте поковыряться с barcode. Я когда-то давно генерировал с её помощью постскрипты с соотв. образом расположенными последовательно нумерованными штрихкодами, но в памяти почему-то отложилось, что и без баркода, одни номера, эта штука умеет. Я делал под вендами, но в линуксе, кажется, точно такая же. А с постскриптом уже поступите как велит партийная совесть - или сразу в печаталку, вторым прогоном, или pdf нагенерируете, или ещё как.
Завтра поищу. Я помню что было где-то по-поводу автоматической нумерации. Вот только не помню где.
Интересно, однако...
Кстати - а вы в СВГ шарите, да? :) Статейку бы почитал бы для чайников...
Кстати - а вы в СВГ шарите, да? :) Статейку бы почитал бы для чайников...
Да я и не предполагал даже вашего авторства. Просто если сохранился букмарк на эту статью - значит, человек интересуется и шарит в СВГ - предположительно :)
Эм... Нет, к сожалению про SVG мало что знаю, если точнее, то почти ничего. А что касается букмарка, то его небыло :) Я воспользовался поиском по Хабру, ключевые слова "Inkscape штрих код"
Я похожие вещи делаю при помощи gLabels http://blog.worldlabel.com/2010/advanced-usage-with-glabels-labelscards-linuxgnu.html
OpenOffice.org Writer вроде как тоже должен уметь http://www.freesoftwaremagazine.com/articles/mail_merge_openoffice_org
OpenOffice.org Writer вроде как тоже должен уметь http://www.freesoftwaremagazine.com/articles/mail_merge_openoffice_org
1. Рисуете не 10 билетов на страницу, а Делаете отдельную страницу под размер будущего билета. Потом оформляете так, как нужно. В том месте, где должен быть номер делаете так:
Вставка->Поля->Номер страницы.
2. Всё это дело копируете и у вас будет 10 страниц, на которых будут номера от одного до 10-ти.
3. Печатаете.
4. Переводим курсор в самое начало документа, жмём правой кнопкой, выбираем Абзац->Положение на странице. Там ставим галочку "Добавить разрыв", Тип "Страница", Положение "Перед", Номер страницы "10".
На всех страничках нумерация автоматом заменится с 11-ти до 20.
5. Печатаем.
6. Идём туда же, ставим в номере страницы 21.
7. ????
8. PROFIT
Это я так, бегло пробежался по докам.
У этого способа есть один минус - нумерация идёт 1..10,10..100 и т.д. Нулей впереди нет. Но документация перед вами, почитайте. Скорее всего это лечится через стили.
Вставка->Поля->Номер страницы.
2. Всё это дело копируете и у вас будет 10 страниц, на которых будут номера от одного до 10-ти.
3. Печатаете.
4. Переводим курсор в самое начало документа, жмём правой кнопкой, выбираем Абзац->Положение на странице. Там ставим галочку "Добавить разрыв", Тип "Страница", Положение "Перед", Номер страницы "10".
На всех страничках нумерация автоматом заменится с 11-ти до 20.
5. Печатаем.
6. Идём туда же, ставим в номере страницы 21.
7. ????
8. PROFIT
Это я так, бегло пробежался по докам.
У этого способа есть один минус - нумерация идёт 1..10,10..100 и т.д. Нулей впереди нет. Но документация перед вами, почитайте. Скорее всего это лечится через стили.
угу. я уже представил лицо человека, которому нужно напечатать порядка 10000 билетов :-)
inksape умеет скрипты, например вот http://python.su/blog/timas/2008/12/04/napisaniya-rasshirenij-dlya-inkscape-s-pomoschyu-python/
Доброго дня.
Я работаю в типографии и нумерацию разную мы делаем очень часто, так что я отлично понимаю что нужно сделать. И думаю, что увы и ой, сделать это удобно в линуксе не выйдет.
Но подскажу виндовую софтину - PrintShop Mail 6.0
Она умеет все, что требуется (и гораздо больше), удобна в работе и очень гибка в настройках. Там есть встроенный язык для оперирования переменными данными, так что многие вещи можно очень упростить. Например, напечатать 10 тыщ листов А3, на которых собраны билеты по 10 штук. Софтина однозначно удобней корела, т.к. печать переменных данных - это ее основная функция, а у корела это прибамбас.
Я работаю в типографии и нумерацию разную мы делаем очень часто, так что я отлично понимаю что нужно сделать. И думаю, что увы и ой, сделать это удобно в линуксе не выйдет.
Но подскажу виндовую софтину - PrintShop Mail 6.0
Она умеет все, что требуется (и гораздо больше), удобна в работе и очень гибка в настройках. Там есть встроенный язык для оперирования переменными данными, так что многие вещи можно очень упростить. Например, напечатать 10 тыщ листов А3, на которых собраны билеты по 10 штук. Софтина однозначно удобней корела, т.к. печать переменных данных - это ее основная функция, а у корела это прибамбас.
> сделать это удобно в линуксе не выйдет.
LaTeX не устраивает, хуже?
Без холиваров, интересно мнение.
LaTeX не устраивает, хуже?
Без холиваров, интересно мнение.
тут дело в постановке задачи. латекс - это программа для верстки (как InDesign в виндах). и латекс и индез умеют оперировать переменными данными. но вот дальше возникают неудобства, связанные с монтажными особенностями допечатной подготовки в типографиях. задача - пронумеровать одновременно несколько билетных бланков, размещенных на А3 листах. причем, часть надо сделать так, чтобы после того, ка впечатают номера и порежут билеты, стопки с этими билетами просто составить друг на друга и порядок номеров сохранился.
если по-простому, то сделать в латексе или индезе файл с 10000 номеров - не проблема. а вот сделать такое с несколькими наборами разных номеров одновременно - как минимум неудобно. латекс и индез - это не те инструменты для подобной работы. поэтому и существуют отдельные программы для спуска полос и для печати переменных данных.
а интересно, существуют ли под линукс программы для спуска полос. в виндовс таких очень мало. отличная софтина, например, Preps.
если по-простому, то сделать в латексе или индезе файл с 10000 номеров - не проблема. а вот сделать такое с несколькими наборами разных номеров одновременно - как минимум неудобно. латекс и индез - это не те инструменты для подобной работы. поэтому и существуют отдельные программы для спуска полос и для печати переменных данных.
а интересно, существуют ли под линукс программы для спуска полос. в виндовс таких очень мало. отличная софтина, например, Preps.
>причем, часть надо сделать так,
опечатка. "часто надо сделать так"
опечатка. "часто надо сделать так"
> задача - пронумеровать одновременно несколько билетных бланков, размещенных на А3
> листах. причем, часть надо сделать так, чтобы после того, ка впечатают номера и
> порежут билеты, стопки с этими билетами просто составить друг на друга и порядок
> номеров сохранился.
В LaTeX много дополнительных пакетов. Например тот же пакет texpos для абсолютного позиционирования текстовых блоков. Мне кажется, с ним легко решить описанную задачу.
Но решать (генерить latex файл), конечно придется из скрипта.
Минусы по сравнению с GUI программами такого подхода (ИМХО):
(-) - нужен человек, способный разобраться в латексе и написать скрипт
(+) - легко автоматизировать решение
(+/-) - сначала времени тратиться больше, потом - меньше.
> листах. причем, часть надо сделать так, чтобы после того, ка впечатают номера и
> порежут билеты, стопки с этими билетами просто составить друг на друга и порядок
> номеров сохранился.
В LaTeX много дополнительных пакетов. Например тот же пакет texpos для абсолютного позиционирования текстовых блоков. Мне кажется, с ним легко решить описанную задачу.
Но решать (генерить latex файл), конечно придется из скрипта.
Минусы по сравнению с GUI программами такого подхода (ИМХО):
(-) - нужен человек, способный разобраться в латексе и написать скрипт
(+) - легко автоматизировать решение
(+/-) - сначала времени тратиться больше, потом - меньше.
я, к сожалению, с латексом не знаком, но точно могу сказать что приходится решать довольно разные задачи с переменными данными. про билеты - это всего один из вариантов.
вот примеры:
нумерация от 1 до 10000
нумерация от 00001 до 10000
нумерация до 10 тыщ, но блоками по 1000 разных номеров одновременно (это задача топикстартера)
задача топикстартера, но при этом по 2 одинаковых номера на билете, и они развернуты под разными углами
персонификация, подписать 1000 открыток разными именами
то же, только разные имена, фамилии и должности
и разные другие варианты
если в латексе для этого придется писать разные скрипты и придумывать разные подходы, то это очень-очень усложнит работу. а в специальном софте для переменных данных это все делается по одинаковым принципам и делается быстро.
я тоже без холиваров ) просто гораздо логичней (при наличии возможности, конечно) использовать виндовые программы, где "сел и поехал", чем полчаса придумывать как это сделать на линуксе, потом еще полчаса все дотачивать (скрипты и прочее) и получить тот же результат. а на завтра подобная задача изменяется и приходится все придумывать заново.
вот примеры:
нумерация от 1 до 10000
нумерация от 00001 до 10000
нумерация до 10 тыщ, но блоками по 1000 разных номеров одновременно (это задача топикстартера)
задача топикстартера, но при этом по 2 одинаковых номера на билете, и они развернуты под разными углами
персонификация, подписать 1000 открыток разными именами
то же, только разные имена, фамилии и должности
и разные другие варианты
если в латексе для этого придется писать разные скрипты и придумывать разные подходы, то это очень-очень усложнит работу. а в специальном софте для переменных данных это все делается по одинаковым принципам и делается быстро.
я тоже без холиваров ) просто гораздо логичней (при наличии возможности, конечно) использовать виндовые программы, где "сел и поехал", чем полчаса придумывать как это сделать на линуксе, потом еще полчаса все дотачивать (скрипты и прочее) и получить тот же результат. а на завтра подобная задача изменяется и приходится все придумывать заново.
Привет, бро :-)
Собственно, спасибо большое за наводку, посмотрю.
Собственно, спасибо большое за наводку, посмотрю.
> я тоже без холиваров ) просто гораздо логичней (при наличии возможности, конечно)
> использовать виндовые программы, где "сел и поехал", чем полчаса придумывать как это
> сделать на линуксе, потом еще полчаса все дотачивать (скрипты и прочее) и получить тот
> же результат. а на завтра подобная задача изменяется и приходится все придумывать
> заново.
Каждый подход имеет право на жизнь. Если владеть Латексом, то все довольно быстро. Подход с менюшками сначала ускоряет работу, а потом часто становится тормозом. С другой стороны, сегодня персоналу легче объяснить менюшки.
Кстати еще scribus вроде есть, программа для верстки. Хотя я не уверен как в ней решать задачу.
> использовать виндовые программы, где "сел и поехал", чем полчаса придумывать как это
> сделать на линуксе, потом еще полчаса все дотачивать (скрипты и прочее) и получить тот
> же результат. а на завтра подобная задача изменяется и приходится все придумывать
> заново.
Каждый подход имеет право на жизнь. Если владеть Латексом, то все довольно быстро. Подход с менюшками сначала ускоряет работу, а потом часто становится тормозом. С другой стороны, сегодня персоналу легче объяснить менюшки.
Кстати еще scribus вроде есть, программа для верстки. Хотя я не уверен как в ней решать задачу.
Всем отписавшимся – LaTeX – это то, что мне, походу дела, нужно. Но крутить его мне придется, похоже, долго, и потому еще раз – большое спасибо всем, будем разбираться.
Мне все же кажется, что с inkscape + скрипт будет удобнее, ибо все же латекс позиционируется для подготовки больших документов со множеством формул.
Делать на нем один лист и позиционировать отдельные цифры на листе, по-моему будет не очень удобно. Но вообще смотрите сами.
Делать на нем один лист и позиционировать отдельные цифры на листе, по-моему будет не очень удобно. Но вообще смотрите сами.
Не совсем так. Это система подготовки к печати разных документов, от документов с множеством формул, тут Вы правы, до книг, статей и презентаций. Есть множество расширяющих его возможности пакетов.
Главнох же его отличий с моей точки зрения от программ типа офиса, два, то, что он язык разметки и второе то, что он гораздо более жестко основан на стилях.
А для написания скриптов, то, что он текстовый и с простой структурой.
Главнох же его отличий с моей точки зрения от программ типа офиса, два, то, что он язык разметки и второе то, что он гораздо более жестко основан на стилях.
А для написания скриптов, то, что он текстовый и с простой структурой.