Думаю, почти каждый сталкивался с проблеммой печати больших pdf файлов. Недавно и мне пришлось напечатать мануал в 600 страниц. Так как документ целиком состоит из текста не очень то хотелось печатать все 300 листов а4. В поисках решения наткнулся на статью от rapkasta.
Вот так я и набрел на замечательный пакет psutils, вот только способ брошюрирования меня не обрадовал. Слишком много работы. А мне ленивому хочется автоматики, вдруг в дальнейшем пригодится.
Тут я и вспомнил что в университете приходилось прошивать черновики дипломной и получалось довольно дешево. Прошить 300 листов пластиковой пружиной оказалось стоит 79 рублей. Проблемма осталась в скрипте, как его переделать так, чтобы удобно было печатать с минимумом человеческого влияния в дальнейшем.
Для начала, нужно установить 2 пакета:
1. texlive-core
2. psutils
Ставятся они просто, если у вас Ubuntu то sudo apt-get install texlive-core 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
Итак, напоследок, маленькая калькуляция стоимости:
- Заправка принтера 236 руб.
- Ресурс принтера на одной заправке 1500 проходов
- Бумага ксероксная 500 листов 118 руб.
- Брошюрирование больше 200 листов — 79 руб.
Итого было использовано 150 листов = 35.4 руб. + 300 проходов принтера = 47.2 руб. + 79
35.4 + 47.20 + 79 = 161.6 руб.
В вашем регионе сумма может быть несколько иная.
ПС. В идеале хотелось бы получить готовый баш скрипт, чтобы почти полностью забрать человеческий фактор из этой рутинной операции. Буду признателен за любые комментарии по поводу улучшения скриптов. Особенно момент который касается использования Evince для центрирования и скейлинга изображений.
Автор: iflista