четверг, 29 января 2009 г.

Печатаем книгу сами! Спуск полос в домашних условиях

Если ваш новенький цветной фото-принтер оказался говностанком для печати говнофоток...

Если у Вас нет денег, чтобы купить книжку о том, как заработать денег...

Если Вы решили сделать близкому и любимому человеку отличный подарок (а как известно, книга - лучший подарок)...

Если ваши глаза собираются в пучок от длительного чтения с экрана...

Если Вы живете в тундре, и книжных магазинов там просто нет (хотелось бы знать, где вы взяли комп)...

Если у Вас просто чешутся руки и хочется сварганить чего-нибудь эдакого...


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

Итак, вам необходимы:

1. Принтер, желательно с дешевыми расходниками (я, к примеру, на свой струйник поставил СНПЧ и забыл о смене картриджей).

2. Не очень умелые ручки.

3. Неизвестно от куда достатая книга в формате PDF.

Если Вы уже пробовали печатать книгу и осознали, в чем заключается проблема, то этот абзац можете смело пропустить. В противном случае, пробуем распечатать нашу книгу. Можно сделать это мысленно. Представляем себе огромные (А4) листы и все связанные с этим неудобства. И, конечно же, рождается желание свернуть это дело как минимум попалам. По этой причине мы делаем вторую попытку и печатаем в две колонки на обе стороны листа. Это легко включается в диалоге печати. Чтобы не переводить бумагу, печатаем только первые 8 страниц (по 4 на каждую сторону). И теперь пробуем слепить из них книжку. Вероятно, довольно быстро Вы осознаете безнадежность этого дела.

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

Для ненавистных мне форточек существует довольно много программ и плагинов, позволяющих выполнить в домашних условиях спуск полос. Однако, найти такую программу для Linux оказалось сложнее. Вероятно, в виду отсутствия большого ассортимента. На многих форумах я даже натыкался на заявление о том, что под Linux таких программ просто нет. Наверное, это было давно и неправда.

Чтобы сделать спуск полос, устанавливаем полезный пакет утилит для работы с файлами postscript:


$ sudo apt-get install impose+


И кидаем в папку ~/bin файлик make_book со следующим содержимым:


#!/bin/bash
pdftops $1 - | psbook | psnup -m 0 -b 1 -2 | ps2pdf - `echo $1 | sed -e "s/\.\(\w*\)/_book.\1/g"`;


Не забудьте сделать этот файл исполняемым:


$ chmod u+x make_book


Чтобы подготовить книгу к печати, просто воспользуйтесь вашим сриптиком (само собой, папку ~/bin нужно прописать в $PATH):


$ make_book my_book.pdf


После этого остается только распечатать файл my_book_book.pdf. Печатаем сначала четные страницы, переварачиваем, и печатаем нечетные. Или наоборот. Или в обратном порядке. Или сразу в один проход. Это уже зависит от модели вашего принтера. В любом случае, думаю, испортив несколько потенциальных книг Вы поймете, как делать правильно. Поэтому, рекомендую тренироваться на маленьких книгах. Сказка для колобка подойдет. Если найдете ее в формате PDF :)

Теперь разберем подробнее, что делает эта длинная команда.

pdftops - преобразовывает PDF в PostScript. Именно в этом формате мы будем превращать документ в книгу.

psbook - пересортировывает страницы в сигнатуры. Проще говоря, на выходе страницы располагаются в таком порядке, в каком они шли бы на отдельных листах тетради. Здесь стоит обратить внимание на некоторые подробности. Если Вы возьмете в руки хорошую книгу с хорошим переплетом, и внимательно посмотрите на нее то, возможно, обратите внимание, что она состоит из множества тетрадочек. Это замечательный способ сделать надежную прочную толстую книжку. И это не так уж сложно, как может показаться на первый взгляд. Первый экземпляр книги я сделал именно таким методом. Однако, это занимает некоторое время. Если вам не нужна красата, а нужно быстро напечатать и прочесть, то лучше распечатать одной тетрадью. А если Вы все же решили взяться за дело серьезно, то в помощь вам придет параметр '-s', после которого нужно указать число страниц в каждой тетрадке (кратное 4-м). О том, как самому сплести книгу, поведает Вам эта замечательная статья.

psnup - укладывает страницы на один лист. параметры '-m' и '-b' задают отступы вокруг листа и вокруг страницы соответственно.

ps2pdf - конвертирует результат из PostScript обратно в PDF. Здесь с помощью sed имя конечного файла формируется на основе исходного с суфиксом '_book'. В принципе, возможно, Вам нет необходимости конвертировать обратно в PDF. Можно сразу печатать файл PostScript. Но у меня с принтером Epson Stylus CX8300 на бумаге почему-то получается низкое разрешение и всяческие неприятные артефакты. Где-то на каком-то форуме встречал аналогичную жалобу владельца принтера Epson. А конвертация в PDF эту проблему снимает.

Вот, собственно и все. Чем Вы будете сшивать свою "тетрадь" - это уже ваши трудности. Могу подкинуть пару идей: иголка с ниткой, строительный степлер, клей ПВА, болты, шурупы, гвозди, канцелярские зажимы, все, моя фантазия исчерпалась, а Ваша?

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

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

Приятного чтения!

30 комментариев:

  1. Классно написано, спасибо и за идею, и за изложение. :)

    ОтветитьУдалить
  2. Благодарю! Самое (да, впрочем, и единственное) дорогое, что я получаю за написание подобных статей - это ваше "спасибо" :)

    ОтветитьУдалить
  3. Наконец-то можно спускать полосы и в Линуксе. Так как в быту чаще всего думаю используется принтер А4 формата, то и брошюры самые распространенные именно А5 формата, а для удачного спуска в этом случае надо подправить скрипт
    pdftops $1 - | psbook | psnup -P a5 -p a4 -m 0 -b 1 -2 | ps2pdf - `echo $1 | sed -e "s/\.\(\w*\)/_book.\1/g"`;

    где -P а5 формат входного pdf файла
    -p а4 формат выходного

    ОтветитьУдалить
  4. Спасибо за замечание.

    Не уверен, от чего это зависит, тем не менее у меня A4 - формат по умолчанию. В Debian этот параметр хранится в файле /etc/papersize. Параметр '-2' - количество страниц на листе. Вероятно, формат брошюры в этом случае подсчитывается автоматически.

    Так или иначе, на моем принтере A4 эти дополнительные параметры не понадобились. Тем не менее, на них стоит обратить внимание при умолчаниях или принтере отличных от A4.

    ОтветитьУдалить
  5. Очень хорошая идея! к сожалению в Linux`e я начинающий пользователь и оценить по достоинству статью не могу. У меня вопрос: какой выбрать принтер, с возможностью доустановки СНПЧ? На какой бумаге получается печатать(газетная, или только оффисная) и какова примерно себистоимость листа(А4)... Понимаю, что вопросов слишком много, для комментария, но ты не думал оформить свои практические знания в очень полезную статью?)
    Алекс.

    ОтветитьУдалить
  6. О себистоимости вообще не задумывался. Цена комплекта чернил соизмерима с ценой книги. Я уже распечатал около 1000 страниц A4, в том числе и в цете немало, а чернил хватит еще как минимум на два раза по столько же. Себистоимость грубо приблизительно меньше цента за лист. Если использовать дешевую газетную бумагу и только черные чернила, цена страницы будет совсем смешной.

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

    Выбирать принтер практичнее не в магазине, а у диллера СНПЧ. Диллеры часто предлагают готовые системы "принтер + СНПЧ". Так Вы снимете проблему поиска подходящей СНПЧ для вашего принтера. Да и дешевле, наверное, будет. Лучше навестить диллера лично, чем общаться с ним по интернету или телефону. Так он Вам сразу покажет всю систему в действии, и покажет образцы печати. В магазине Вам этого не сделают, потому что заправка принтера - действие необратимое, и узнать о качестве печати вы сможете лишь дома. А у диллера в офисе, вполне вероятно, окажутся принтеры на обслуживании, на которых он все и продемонстрирует.

    Выбирая СНПЧ лучше отдать предпочтение надежной конструкции, чем какой-о самопальной системе из бытовых баночек и медицинских "капельниц". Потому что краска - вещь довольно красящая.

    Если хотите печатать фотографии, убедитесь, что у диллера есть цветовой профиль для конкретного выбранного принтера, для конкретных предлагаемых чернил и для конкретной предлагаемой бумаги. Чернила в любом случае будут немного отличаться от оригинальных, и без цветового профиля неправильные оттенки на фотографиях могут неприятно бросаться в глаза. Простого "да есть" не достаточно, пусть найдет и покажет.

    После того, как выбрали принтер, и прежде, чем его покупать, убедитесь, что для него есть драйвера под Linux. Например, под мой Epson нормальный драйвер появился только через пол-года после покупки, и то пришлось собирать его из исходников, потому что в репозитории его еще не было. А первый вариант вообще еле откапал.

    ОтветитьУдалить
  7. спасибо за ответ. очень полезно на мой взгляд. Я ориентируюсь на недорогую систему именно такого профиля: печать из источников в сети, и раз уж это оказывается возможно - фотографии. А теперь я знаю как правильно подступится к этому делу. Еще раз спасибо.
    Алекс.

    ОтветитьУдалить
  8. Огромное спасибо. То что надо! =)

    ОтветитьУдалить
  9. а как бы выглядел скрипт для спуска на А3, книги А5, то есть 4стр. на полосе?
    по теме есть еще программа podofoimpose из пакета PoDoFo

    ОтветитьУдалить
  10. Теоретически вот так:

    psnup -P a5 -p a3 -4

    А на практике не пробовал. Нет у меня такого принтера :) Но если такие параметры есть, то должно работать. Вот только резать придется, а это уже сложнее без специальных инструментов.

    PoDoFo не пробовал по одной простой причине: его нет в репозиториях.

    ОтветитьУдалить
  11. так не проходит, нужно видимо указать, что 4стр. на листе

    ОтветитьУдалить
  12. извиняюсь, нужно как-то указать что первый разворот перевернут

    ОтветитьУдалить
  13. Не совсем понимаю о чем Вы говорите. У меня ничего не переворачивается. Зато есть другая проблема, над которой, стоило бы задуматься - это порядок страниц. Возможно, тут не обойтись без pstops.

    ОтветитьУдалить
  14. Анонимный2 марта 2009 г., 5:45

    Вот я и спрашиваю как перевернуть страницу )

    ОтветитьУдалить
  15. Это только для печати pdf файлов. Если нужно напечатать буклетами djvu - можно не изобретать реактивные велосипеды, а использовать утилиту djvups.

    ОтветитьУдалить
  16. Хорошая утилита, спасибо помогла

    ОтветитьУдалить
  17. Анонимный27 мая 2010 г., 15:26

    Огромное Вам спасибо, спасли кучу невов)
    по тому как печатать:
    hp2015
    печатаем счанала четные старницы, потом ложим в лоток буквами вверх и правым краем внуть принетра и печатаем нечетные страницы...

    вообще можно проверить так - ставим ограничание 4 страницы и четные, потом переворачиваем и ставим ограничение 4 страницы и нечет, хватит чтобы понять так или не так .

    Ешё раз спасибо за статью

    ОтветитьУдалить
  18. Огромное пожалуйста, очень рад :)

    А я, кстати, уже давно не занимался этим. Легкий ноут очень удачно заменяет книгу.

    ОтветитьУдалить
  19. Этот комментарий был удален автором.

    ОтветитьУдалить
  20. как сделать так, чтобы не обрезались сверху листы в файле ***_book.pdf ?
    менял параметры -m и -b - не помогает.

    заметил еще закономерность, если документ маленький(4 страницы проверял) не обрезается, если большой (например 87 стр в моем) то обрезается

    ОтветитьУдалить
  21. К сожалению, давно уже не печатал книги, и не помню как с таким боролся. Помню только, что приходилось по несколько раз перегонять, пока удавалось подобрать подходящие параметры.

    Попробуйте перед тем, как делать спуск полос, изменить размеры страниц документа, добиваясь нужной пропорции страниц. Вроде одна из утилит из того пакета позволяет это делать, не помню точно чем изменял. Если "правильные" пропорции не помогают, попробуйте их сильно исказить и посмотрите, какой будет эффект.

    ОтветитьУдалить
  22. psnup: paper size '' not recognized.
    И так на всех pdf-ках. ЧЯДНТ?

    ОтветитьУдалить
  23. Хорошая статья, спасибо!

    ОтветитьУдалить
  24. Статья просто прекрасна...Слова так и просились...прочтите нас!!!Получила
    удовольствие от чтения такой статьи.Желаю вам здоровья и радости и успехов во всем.И пусть Бог хранит вас и вашу семью.

    ОтветитьУдалить
  25. Большое спасибо, Раиса! :)

    ОтветитьУдалить
  26. Здравствуйте. А я привыкла все равно обращаться в типографию. как-то для меня это более надежно. Обращаюсь всегда на http://web2book.ru/ . Делают они качественно, быстро. Очень нравится то, что можно заказать печать малым тиражом. Для меня это идеальный вариант, постоянно скачиваю книги с интернета и иду к ним. Еще ни разу не подводили.

    ОтветитьУдалить
  27. Всем привет. Я как начинающий писатель могу с Вами согласиться. Я всегда издаю книгу по требованию http://web2book.ru/publish/books/, это очень удобно и не затратно.Удачи всем!

    ОтветитьУдалить
  28. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  29. Попробовал скрипт в таком виде, как в статье - всё уехало вниз, сверху примерно 20% пустого, низ - за пределами листа :( Попробую это пофиксить.
    Но возник другой вопрос. В книжке 344 листа, как сначала порезать книжку на нетолстые брошюрки, к примеру, по 16 страниц, а потом прогнать в книжку?

    ОтветитьУдалить
    Ответы
    1. Ответ на Ваш вопрос имеется в статье :)
      "А если Вы все же решили взяться за дело серьезно, то в помощь вам придет параметр '-s', после которого нужно указать число страниц в каждой тетрадке (кратное 4-м)"

      Удалить