Как стать автором
Обновить

Как дешево напечатать книгу в Linux

Настройка Linux*nix
Из песочницы
Думаю, почти каждый сталкивался с проблемой печати больших pdf файлов. Недавно и мне пришлось напечатать мануал в 600 страниц. Так как документ целиком состоит из текста не очень то хотелось печатать все 300 листов а4. В поисках решения наткнулся на статью от rapkasta.

Вот так я и набрел на замечательный пакет psutils, вот только способ брошюрирования меня не обрадовал. Слишком много работы. А мне ленивому хочется автоматики, вдруг в дальнейшем пригодится.

Тут я и вспомнил что в университете приходилось прошивать черновики дипломной и получалось довольно дешево. Прошить 300 листов пластиковой пружиной оказалось стоит 79 рублей. Проблемма осталась в скрипте, как его переделать так, чтобы удобно было печатать с минимумом человеческого влияния в дальнейшем.

Для начала, нужно установить 2 пакета:
1. texlive-core
2. psutils
Ставятся они просто, если у вас Ubuntu то sudo apt-get install texlive texlive-extra psutils
В моем случае pacman -S texlive-core psutils
Воспользуйтесь вашим менеджером пакетов.

Распишу пошагово:


Обрезаем поля чтобы получить максимальное рабочее покрытие текстом

1) pdfcrop yourFile.pdf book.pdf

Конвертируем pdf в ps файл

2) pdftops book.pdf book.ps
В psutils есть два способа конвертировать pdf. pdf2ps и pdftops. Разница между ними в том, что первый растрирует шрифты в хорошее разрешение а второй старается сохранить как можно больше информации o pdf

Сортировка страниц

Пересортируем страницы так, чтобы чередовались первые две и последние две страницы, чтобы при двусторонней печати и последующему разрезанию а4 надвое получились отсортированные страницы, которые можно было бы сложить вместе и прошить.

3) psbook book.ps > sorted_book.ps
Эта команда добавляет пустые страницы в файл, чтобы общее количество страниц было кратным четырем, а также сортирует страницы по две сначала и две с конца. По умолчанию весь файл это одна брошюра, но можно задавать различное количество страниц для брошюры.

Переделываем файл, по 2 страницы центрированно

4) Открываем полученный файл в Evince (программа для просмотра документов по умолчанию в Ubuntu) выбираем печать в файл как результирующий файл будет называться result.ps, печать в Postscript, в вкладке Page Setup выбираем 2 страницы на сторону, размер бумаги а4, ориентация портрет, идем у вкладку Page Handling и выбираем Page Scaling: Fit to Printable Area, и ставим галочку напротив авторотации и центрирования, жмем печать.
Того же результата можно достичь используя команду psnup -p a4 -l -2 > result.ps, только результата, который бы меня устроил мне получить не удалось.

Сортируем файлы

5) psselect -e -r result.ps book-even-reverse.ps && psselect -o result.ps book-odd.ps
В результате получаем два файла для печати, в одном из которых страницы идут задом наперед. То же самое можно было получить и из evince выбрав печать и соотв. опции.

Удаляем рудиментарные файлы

6) rm book.pdf book.ps sorted_book.ps result.ps

Печатаем файлы

7) lpr book-odd.ps переворачиваем напечатанное и снова набираем lpr book-even-reverse.ps

Итак, напоследок, маленькая калькуляция стоимости:
  1. Заправка принтера 236 руб.
  2. Ресурс принтера на одной заправке 1500 проходов
  3. Бумага ксероксная 500 листов 118 руб.
  4. Брошюрирование больше 200 листов — 79 руб.

Итого было использовано 150 листов = 35.4 руб. + 300 проходов принтера = 47.2 руб. + 79 руб. брошюрирование.
35.4 + 47.20 + 79 = 161.6 руб.
В вашем регионе сумма может быть несколько иная.

ПС. В идеале хотелось бы получить готовый баш скрипт, чтобы почти полностью забрать человеческий фактор из этой рутинной операции. Буду признателен за любые комментарии по поводу улучшения скриптов. Особенно момент который касается использования Evince для центрирования и скейлинга изображений.
Теги:печать документовлинукс в массыличный опытlinux bash scriptslinux для всехtutorial
Хабы: Настройка Linux *nix
Всего голосов 33: ↑32 и ↓1 +31
Просмотры24.6K

Похожие публикации

Linux администратор
до 120 000 ₽ТИТАН-2Санкт-ПетербургМожно удаленно
Системный администратор Linux/Senior
от 50 000 до 120 000 ₽NetPingМожно удаленно
C++ Developer (Linux)
от 150 000 до 250 000 ₽MicroAviaСанкт-Петербург
C++ Embedded Developer (Linux)
от 150 000 до 250 000 ₽MicroAviaСанкт-Петербург
Системный администратор Linux / DevOps
от 170 000 ₽Golden GooseМоскваМожно удаленно

Лучшие публикации за сутки