![如何仅打印偶数页或奇数页 (HP LaserJet 1018)](https://linux22.com/image/966695/%E5%A6%82%E4%BD%95%E4%BB%85%E6%89%93%E5%8D%B0%E5%81%B6%E6%95%B0%E9%A1%B5%E6%88%96%E5%A5%87%E6%95%B0%E9%A1%B5%20(HP%20LaserJet%201018).png)
有时我会打印双面文档。因此,我会先打印奇数页,然后使用相同的纸张以相反的顺序打印偶数页(打印时我只是检查反向)。
我手动执行此操作,这意味着我自己输入页码,例如:奇数页为 1,3,5,7,9,偶数页为 2,4,6,8,10。
问题是,当我想打印大量页面时,这很难做到。想象一下 100 页。此外,我可能会在中间犯一些错误。
有没有办法在 ubuntu 的常规打印对话框中定义奇数页?
我正在使用带有默认hplib的Ubuntu 12.10进行打印。
答案1
如果您尝试从 libreoffice 打印,则可以选择仅打印左页或右页。
打开打印对话框,然后选择布局选项卡并在页面下拉菜单下选择适当的选项。
如果您正在打印 PDF,文档查看器在打印对话框的页面设置选项卡下有一个类似的选项。
答案2
您也可以使用以下命令从命令行执行此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)
答案3
根据hiro protagonist
答案,我试图节省每个人制定细节的时间,以便实现其功能。
运行lpstat -p -d
以查找您的打印机的名称,并printer_name
在下面的脚本中将其替换为您的打印机的名称。
一旦将以下函数保存在~/.bashrc
或~/.zshrc
或类似文件中,它们就可以作为来自 shell 的命令调用,例如:
printOdd <file>
printEven <file>
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
在系统中安装