Linux для всех

индекс
247,20

Печатаем книги-брошюры в *nix

Наверняка у многих из тех, кто читает этот пост, возникало желание распечатать некую книгу на бумаге и сделать это так, чтобы книга была по удобству близка к типографской. Конечно, в роли книги может выступать как какой-нибудь pdf-документ, так и какая-нибудь tex'овая научная работа.

Ну а что же такое брошюра? По сути — это такая тетрадка, каждый лист которой является половиной большого листа, а общее количество страниц легко рассчитать по формуле <кол-во «больших» листов>*2<сколько «маленьких листов» на «большом»>*2<два оборота у листа=2 страницы>.

Конспект по матану, каталог avon — это брошюра. Большая часть книг представляет из себя несколько брошюр, наверняка вы встречались с ситуацией, когда из старых потрёпанных книг выпадает одновременно несколько страниц, сложенных «в тетрадку»; так же часто такие тетрадки специально вырываются из учебников, чтобы использовать в качестве шпаргалок, но это не тема нашей беседы.

В этой статье я постараюсь объяснить как просто и быстро распечатать любой документ в виде брошюры.


Получаем Postscript документ


Итак, у нас имеется некий документ. Первым делом, откройте его в каком-нибудь просмотрщике (н-р в evince) и "распечатайте в файл". На выходе мы должны получить Postscript файл, с которым мы и будем далее работать.
Назовём этот файл, например, book.ps.

Обрабатываем Postscript файл


Итак, определимся с целью: на выходе мы должны получить файл, распечатав который, мы получим брошюру.

1)psbook book.ps 1.ps
Эта команда дополнит документ пустыми страницами в нужных местах для того, чтобы количество страниц стало кратным 4м.

2)Теперь нам необходимо «склеить» каждые 2 страницы A4 в одну страницу A4, иными словами, мы должны получить документ, на каждой странице которого будет по 2 страницы A5.
psnup -la4 -2 1.ps > result.ps

3)Теперь удалим рудементарный файл 1.ps
rm 1.ps
и приступим к печати получившейся брошюры

В качестве альтернативы, все три шага можно объеденить в один, используя конвейры: psbook book.ps | psnup -la4 -2 > result.ps

Распечатываем брошюру


Самый интересный момент, с которым мне пришлось повозиться из-за моей природной лени.

1) Откройте получившийся файл result.ps в просмотрщике и распечатайте нечётные страницы.
2) Теперь пересортируйте листы так, чтобы первая страница стала последней, а последняя — угадайте — первой. Вставьте отсортированные листы в принтер так, чтобы печать проводилась с обратной стороны конца распечатанной страницы.
На моём HP Photosmart последний шаг делается простой вставкой страниц «как есть», то есть после сортировки, не переворачивая страницы, вставляем в лоток листы так, чтобы верх распечатанных до этого страниц был спереди и видим.
3) А теперь распечатайте чётные страницы.
4)После распечатки достаточно сложить распечатанные страницы слева направо

Hints

1) Не следует использовать «обратный порядок печати» в совокупности с указанием чётности/нечётности страниц, с целью пропустить шаг с пересортировкой страниц. Это не допустит неверного порядка распечатки и неверных страниц для распечатки.
2)Если бумага — тонкая, то следует перед первой печатью «перелестать» листы. Пересортировка перед второй печатью (см. пункт выше) так же поможет не допустить слипания страниц.

Скрепление страниц


Нам потребуется иголка/шило, скобки от степлера, ручка/карандаш, 2 скрепки.
1)Распечатанные листы укладываем ровной стопкой, закрепляем верхний левый и правый нижний углы скрепками, теперь складываем листы слева направо.
2)В центре намечаем 2 точки: на сантиметр ниже верха и на сантиметр выше низа. Берём скобку и прикладываем в первой точке верхом, отмечаем точку в месте, где скобка кончается. Аналогично прикладываем к нижней точке низом скобки и ставим точку в месте, где скобка начинается.
Давайте опустим, что скобки не имеют ни ничала ни конца :)
3)В намеченных точках делаем шилом/иголкой дырки и вставляем в них скобки, закрывая их с внутренней стороны пальцем/чем нибудь твёрдым.
4)Убираем скрепки, радуемся :)

Я не художник, но попытался


Мои художественные способности ниже плинтуса, но я таки попытался руками на бумаге зарисовать как нужно ложить бумагу и расписал основные шаги: img148.imageshack.us/img148/4875/brove.jpg

Ссылки по теме


*) Использование psutils — пакета для работы с Postscript файлами
*) Making booklets with psbook and psnup (гугло-кеш)

P.S.Отлично понимаю что статья описывает достаточно тривиальную задачу, но я уверен тем, кто хочет распечатать статью брошюркой, не сделав при этом 3-4 «корявые» распечатки, она поможет.
P.S.S.Метался между блогом «принтеры» и «Linux для всех», перенёс в последний, думаю, так правильней.
+39
3 января 2010, 18:04
71

комментарии (63)

НЛО прилетело и опубликовало эту надпись здесь
0
rapkasta #
Да, по нему тоже вполне можно печатать, но в результате получается не брошюра, а именно «2 страницы на лист», такие распечатки стоит скреплять где-нибудь в левом верхнем углу степлером. Многие распечатки у меня именно в таком виде, но брошюрка всё-же приятнее как минимум тем, что её можно листать слево направо, а не переворачивая страницу и потом перекладывая её назад :)

К слову, благодаря именно этому посту набрёл на описание psbook.
НЛО прилетело и опубликовало эту надпись здесь
+1
Alken #
Спасибо. А то под Win пользовался удобным макросом для Word. А для *nix способа не знал.
0
tigso #
Подробнее про макрос для Word, пожалуйста.
+1
Alken #
Макрос называется «Верстка Текста Книжкой 5.11». Вот ссылка на сайт автора. Работает в Word97/2000/XP/2003 (в 2007 не проверял). Много настроек возможность печати нескольких «тетрадок» для последующего переплета.
0
Marsikus #
А в 2007 есть разметка страницы с зеркальными полями для книжек.
0
ColorPrint #
для винды кстати полно GUI-решений для этого (самые лучшие — fineprint и preprinter), а под линух что-то ничего удобного нет :(
+2
rapkasta #
Реализовать гуй (юзабельный) под это — часа 2 работы, с другой стороны если всё итак делается проще, зачем делать гуй? Хотя да, он поможет сделать «одним кликом», но тогда человек его использующий несовсем будет понимать что он делает :)
–1
licvidator #
Под Линукс есть ТеХ. Для печати научной и околонаучной литературы (с формулами) ничего мощнее ещё не придумали.
0
ColorPrint #
Причем здесь TeX?
Как Вы с его помощью брошюру из PDF или любого текстового документа распечатаете??
НЛО прилетело и опубликовало эту надпись здесь
0
ColorPrint #
да, но того стоят, пока на линух не перешел — активно пользовался ими.
А под линух ни бесплатных, ни платных аналогов нет :(
+2
ColorPrint #
на 2 шаге кстати опечатка вроде, должно быть так наверное:
psnup -la4 -2 1.ps > result.ps
0
rapkasta #
Правда, спасибо, исправляю.
0
mayhem #
чет у меня правые поля нулевые получаются. буквы впритык к странице
0
rapkasta #
Если в исходном файле были такие поля, то и на итоговом они же и будут, стоит учитывать, ч то поля уменьшаются как минимум в 2 раза.
НЛО прилетело и опубликовало эту надпись здесь
0
j0hn #
по-моему, проще сделать pdf-ку, открыть с помощью acrobat reader, и уже в нем есть функция печати брошюры… естественно, работает как в windows, так и в linux… пользуюсь этой возможностью уже давно.
+1
rapkasta #
Ничем не проще — перегон в ps доступен из большего кол-ва приложений (причина-ниже), да и существует аналогичный набор скриптов для pdf.
Тут дело вкуса, но опять таки, если хочется всё по максимуму автоматизировать, то взяв lpr в руки + разбив файл result.ps на два — с чётными и нечётными страницами (psutils это позволяет), то можно написать простенький скриптик, который вообще говоря будет работать без участия каких-либо gui-утилит:
1)печатаем нечётные
2)издаём сигнал пиииии, ждём N сек(или ждём нажатия на кнопочку) /в этот момент человек быстренько перекладывает листочки/
3)печатаем чётные

Вообще говоря, ps — более подходящий формат для подготовки документов для печати, а pdf — это такой «проапгрейденный» ps, так что пользы _в данном аспекте_ от последнего не много, в конечном итоге, документ, отправленный на печать, всё равно будет сконвертирован в ps…

Хотя ваш способ тоже имеет право быть и является более простым, хотя и заставляет использовать некий коммерческий (я не сказал платный) софт.
P.S.У многих linux-пользователей акробат не стоит, у меня, например, не стоит.
0
sigizmund #
> Хотя ваш способ тоже имеет право быть и является более простым, хотя и заставляет использовать некий
> коммерческий (я не сказал платный) софт.

не является ли это (случайно) доказательством превосходства коммерческого софта в данном случае? ;-)

> P.S.У многих linux-пользователей акробат не стоит, у меня, например, не стоит.

Поставьте? По теме — я использую вот это: web.mac.com/vogelbusch/Site/Programs/Programs.html — работает ровно в один шаг из абсолютно любой программы которая умеет печатать ;-)
0
rapkasta #
Зачем мне ставить софт, без которого я отлично могу жить, не ущемляя себя в правах ?)
0
rapkasta #
и возможностях
0
drjohnes #
В OpenOffice при печати документа присутствует такая опция — Печатать брошюрой. Регулярно пользуюсь.
0
axunax #
Спасибо, полезно +
0
dobry_kolbasnik #
Эх, а я как раз хотел спросить про ОпенОфис, а вот не успел…

В общем…

1. ОпенОфис рулит;
2. За пост все равно спасибо, возьму на заметку!
–3
ColorPrint #
тормозной опенофис к сожалению.
MS Office под Wine намного комфортнее летает :(
+2
dobry_kolbasnik #
MS!!! Да еще и под вайном!!! Ужс…

Нет уж, лучше «тормозной» ОпенОфис. +2 секунды к времени загрузки — вполне терпимая расплата за кроссплатформенность и открытость.

Кроме того, на современных тачках с Core 2 или Phenom 2 это не особо заметно =)
0
ColorPrint #
а Вы сами пробовали?
к сожалению, и на современных процессорах очень заметно. и не только по времени загрузки.
0
dobry_kolbasnik #
что значит «пробовал ли я»? я бы не советовал, если бы сам не юзал
на работе на всех тачках стоит ОпенОфис, самый медленный проц — Селерон 800 (370 разъем вообще), но на нем тормозит все, так что это не показатель.

а вот на Pentium D 5200, Phenom II x3, да и Celeron 500 в ноуте — летает без вопросов.

Опять же — да, он медленнее, чем МС Офис, потому, что на Яве писан, но это грошовая расплата за кроссплатформенность, открытость, бесплатность при практически равном функционале.
0
dema #
OpenOffice написан на С++. На java там только интерфейс к плагинам
+2
rapkasta #
Честно говоря давно уже не понимаю людей, которые говорят «тормозной опенофис» — на двух разных машинках (на одной вообще 256 мб оперативки), после запуска, опенофис тормозит только при работе с большими doc'овскими документами, наполненными потоком сознания огромными картинками, уменьшенными внутри самого офиса (всё равно что в аватаре на твиттере отдавался полноразмерный файл, который уменьшался при показе атрибутами тега img).

Может это я такой особенный, но проблем с производительностью ОО не испытаваю, а вот последний билд явы меня разочаровывает — открыв нетбинс/эклипс и опеноффис можно угадывать кто из двух упадёт… На предыдущем билде явы такого замечено не было…
0
ColorPrint #
ну Вы попробуйте мс офис под вайном таки запустить )
я сам в шоке был )
Проц AMD Turion x64 1.8Ghz, память 4гига…
Разница в работе очень ощутимая, и при запуске, и в процессе работы.
0
rapkasta #
Пару лет назад пытался 2003 запустить, при запуске выдавал ошибку и падал.
С тех пор у использую только ОО и за эти 2 года желание ставить m$ office пропало, уж извините :)
0
ColorPrint #
ну сейчас wine допилили уже немного, 2007й нормально работает…
2010й пока не ставится %)
У меня в опенофисе кстати часто при открытии документа, сверстанного в мс оффисе (даже в открытом вроде бы формате docx), ползет форматирование (листов становится больше чем было, ну и так по мелочам еще проблемы бывают), так что все равно для совместимости приходится мс офис держать еще :(
+1
rapkasta #
пытался поразбираться в этом вашем открытом формате, odf хотябы читаем, жда и понятно что разработчки oo явно не бросились реализовывать *x форматы, сделали «чтобы было», ровно как и m$ сделало с odf, или я не прав насчёт последнего?)
Просто я рассматриваю OO не как «аналог» майкрософтовского офиса, а как вполне себе нормальный продукт, который идёт своей дорогой и считаю, что реализация работы с «неродными» форматами — не более чем приятная мелочь.

P.S.Давайте не будем ударяться в холивары, ок?)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
0
rapkasta #
Не понимаю к чему вы это, разводить холивар из-за одной строчки-примера? нененене :)
+1
RumataEstora #
Давно делаю книжки для себя по примерно такой технологии — with-love-from-siberia.blogspot.com/2009/05/blog-post.html. Кстати, 3-я миниатюра из 10 показывает примерные настройки одного из принтеров для создания брошюр. Именно брошюр. Полагаю, что в ваших принтерах это тоже можно настроить.
0
rapkasta #
Спасибо, очень наглядно.
0
ColorPrint #
а это разве не виндовый драйвер там?
под CUPS-ом ничего похожего и близко нет…
0
rapkasta #
Собственно замените пункт с распечатыванием на первые части этой статьи и всё встанет на свои места
0
ColorPrint #
По-Вашему — это очень удобно переключаться из GUI-приложения в консоль чтобы собрать и распечатать брошюру?
0
rapkasta #
я выше описал вариант, когда вообще ниодно gui приложение не нужно. Лично я не имею никаких предубеждений относительно миксов gui/консоль — если есть удобные инструменты, то почему бы их не использовать по-максимуму?

Я вот тут рельсы учу и смотрю скринкасты: автор постоянно переходит из консоли в textMate и меня это никак не
0
rapkasta #
… никак не тревожит, хотя конечно это пример нескольо отличается от того о чём мы говорим, но думаю суть понятна
0
ColorPrint #
ну далеко не все в TeX верстают, и далеко не всегда это удобно и оправдано )
0
Virgoss #
Для PDF есть еще такой сайт bookletcreator.com — платформонезависимый вариант :)
0
rapkasta #
К сожалению, оффлайновая версия очень даже платформозависима… хоть и дот нет
0
Mordovorot #
Подскажите, существует ли у данного способа возможность разбить большую брошюру на подброшюры листа по четыре напрмер. Т.к. сгибать и читать брошюру листов в двести ой как неудобно. К слову сказать такая функция присутствует в Fineprint.
И ещё: man psnup говорит, что формат бумаги задаёт опция -p, а не -l.
Тем не менее пасибо за статью!
0
rapkasta #
1)Цитата из того же мана:
«The -l option should be used for pages which are in landscape orientation (rotated 90 degrees anticlockwise). The -r option should be used for pages which are in seascape orientation (rotated 90 degrees clockwise)»

А теперь пару римеров для прояснения ситуации
psnup -la4 -2 1.ps > rx.ps
psnup -l -pa4 -2 1.ps > rx2.ps

rx.ps и rx2.ps будут отличаться друг от друга на десяток байт, но «содержимое» будет 1:1, т.о.
psnup -la4 -2 1.ps
в нашем случае просто короче :)

2)
>Подскажите, существует ли у данного способа возможность разбить большую брошюру на подброшюры листа по четыре напрмер

Да, конечно: необходимо разбить исходный документ на несколько частей, а потом с каждой проделать то, что описано в статье. В разбивании поможет psselect.

Про разбивку достаточно хорошо описано здесь (на русском): www.opennet.ru/base/sys/psutils.txt.html

0
Mordovorot #
1) Опцию -la4 у меня не принимает (Ubuntu 9.10, psutil из репов):
~$ psnup -la4 -2 1.ps > result.ps
psnup: invalid option — 'a'
psnup release 1 patchlevel 17

2) Если я правильно понял, то мне придётся для документа из 200 страниц при восьмистраничных тетрадках запустить psselect 50 раз или написать скрипт. Потом все эти файлы тетрадок собрать в один файл или распечатывать по отдельности. Не слишком удобно получается.

0
rapkasta #
1)Странно, у меня принимает, ну значит пишите так как я выше в примере написал :)

2)А как вы хотели ?) вы вполне можете упростить себе работу:
разбейте на части
в каждой части сделайте всё по статье
разбейте каждую часть на чётные и нечётные страницы
склейте все чётные, аналогично нечётные.{*тут нужно подумать с порядком, возможно придётся где-то реверс сделать*}
распечатайте нечётные, переверните, распечатайте чётные. Осталос только разбить получившееся добро на части и собрать в брошюрки.
0
rapkasta #
*т.е если подумать, то можно свести всё дело также к 2м печатям
0
Mordovorot #
Отлично! Мы не ищем лёгких путей :)
Спасибо!
0
rapkasta #
:)Ну это только звучит страшно %) А вообще, когда я сам разбирался, натыкался на набор скриптов, в которых уже реализовано всё что возможно для печати буклетов — погуглите и думаю вы тоже это найдёте)
0
masai #
Можно 50 раз запускать, а можно воспользоваться ключом «-s» для psbook. Например, чтобы делать тетрадки по 4 листа (16 страниц), можно задать такую команду:

psbook -s16 in.ps out.ps

При необходимости пустые страницы автоматически будут добавлены в конец последней тетрадки.
0
bessangel #
psnup -c -4 original.ps | psbook | psnup -l -pa4 -b27 -m10 -d -2 > out.ps

Проверено на Ubuntu 7.10… 9.10
параметры -m10 и -b27 подобраны вручную для полей между страницами
0
masai #
Можно разбивать при помощи ключа «-s» утилиты psbook. См. мой комментарий, который я в этой ветке не туда по ошибке влепил.
0
errr #
Для сшивания удобно использовать дырокол и нейлоновые стяжки.

0
Kukalyakin #
Надо же, как все просто! Линукс — оно и правда… для всех )))
НЛО прилетело и опубликовало эту надпись здесь
0
mrShadow #
Я для себя написал скрипт, переупорядочивающий страницы PDF-документа для печати. Если вдруг кому понадобится — broshure.py. Написан на Python, почти не тестировался (пользовался один раз, самому давно ничего не приходилось печатать), использует программку stapler (наверняка можно было заюзать более распространённый pdftk). Использование коротко описано в комментариях перед кодом.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.