如何仅打印偶数页或奇数页 (HP LaserJet 1018)

如何仅打印偶数页或奇数页 (HP LaserJet 1018)

有时我会打印双面文档。因此,我会先打印奇数页,然后使用相同的纸张以相反的顺序打印偶数页(打印时我只是检查反向)。

我手动执行此操作,这意味着我自己输入页码,例如:奇数页为 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在系统中安装

相关内容