Иногда я печатаю двухсторонние документы. Поэтому сначала я печатаю нечетные страницы, а затем использую ту же бумагу в обратном порядке для печати четных страниц (я просто проверяю обратное при печати).
Я делаю эту операцию вручную, это означает, что я сам ввожу номера страниц, например: 1,3,5,7,9 для нечетных страниц, затем 2,4,6,8,10 для четных страниц.
Проблема в том, что когда я хочу напечатать большое количество страниц, это трудно сделать. Представь себе 100 страниц. Кроме того, я могу сделать некоторые ошибки между ними.
Есть ли способ определить нечетные страницы в общем диалоге печати ubuntu?
Я использую Ubuntu 12.10 с hplib по умолчанию для печати.
Если вы пытаетесь печатать из libreoffice, есть возможность печатать только левую или правую страницы.
Откройте диалоговое окно печати, затем выберите вкладку «Макет» и выберите соответствующий параметр в раскрывающемся списке сторон страницы.
Если вы печатаете PDF, программа просмотра документов имеет аналогичную опцию на вкладке настройки страницы диалогового окна печати.
Вы также можете сделать это из командной строки, используя команду lp
:
$ PDF_NAME='my_document.pdf'
$ NUMBER_PAGES=15
# print odd pages
$ lp "${PDF_NAME}" -P $(seq -s ',' 1 2 "${NUMBER_PAGES}")
# print even pages:
$ lp "${PDF_NAME}" -P $(seq -s ',' 2 2 "${NUMBER_PAGES}") -o outputorder=reverse
# may have to add '-o orientation-requested=6' to rotate by 180°
команды seq
просто выводят разделенный запятыми список страниц, необходимый для lp
команда:
$ NUMBER_PAGES=15
$ seq -s ',' 1 2 "${NUMBER_PAGES}" # -> 1,3,5,7,9,11,13,15
$ seq -s ',' 2 2 "${NUMBER_PAGES}" # -> 2,4,6,8,10,12,14
вышеприведенные команды будут печатать на принтере по умолчанию, если он у вас есть. в противном случае вам нужно будет найти имя принтера и указать его в командной строке:
# find the available printers and the default printer:
$ lpstat -p -d
# printer my_printer is idle. enabled since ...
# direct lp to use the desired printer
$ lp -d my_printer ...
, если вам нужно автоматически получить количество страниц (возможно, есть лучший способ сделать это), который вы можете использовать pdfinfo
из пакета poppler-utils
:
$ NUMBER_PAGES=$(pdfinfo "${PDF_BOOK}" | grep 'Pages:' | cut -d ':' -f 2 | xargs)
Основываясь на ответе главного героя хиро
, я пытаюсь спасти всех, кто прорабатывает детали, чтобы сделать из этого функцию.
Запустите lpstat -p -d
, чтобы найти имя принтера и заменить printer_name
именем принтера в следующих сценариях.
Как только следующие функции сохранены в ~/.bashrc
или ~/.zshrc
или подобном, они могут быть вызваны как команда из оболочки, например:
printOdd
printEven
function printOdd() {
NUMBER_PAGES=$(pdfinfo $1 | grep 'Pages:' | cut -d ':' -f 2 | xargs)
lp "$1" -P $(seq -s ',' 1 2 "${NUMBER_PAGES}") -d printer_name
}
function printEven() {
NUMBER_PAGES=$(pdfinfo $1 | grep 'Pages:' | cut -d ':' -f 2 | xargs)
lp "$1" -P $(seq -s ',' 2 2 "${NUMBER_PAGES}") -d printer_name
}
PS: Вам нужно установить pdfinfo
в вашей системе