From fcddcba4a1eb59fe6d020b4ca666fa5a43a5063a Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Wed, 5 Jan 2022 11:40:54 -0300 Subject: src/bin/duplex: make it print single-sided pages too and rename to src/bin/print --- src/bin/duplex | 140 --------------------------------------------------------- 1 file changed, 140 deletions(-) delete mode 100755 src/bin/duplex (limited to 'src/bin/duplex') diff --git a/src/bin/duplex b/src/bin/duplex deleted file mode 100755 index 12b254e8..00000000 --- a/src/bin/duplex +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/sh -set -eu - -usage() { - cat <<-'EOF' - Usage: - duplex [-q QUALITY] [FILE...] - duplex -h -EOF -} - -help() { - cat <<-'EOF' - - Options: - -q QUALITY choose the print quality, either: - low, medium (default) or high. - -h, --help show this message - - Examples: - - Print the given PostScript file with default quality: - duplex f1.ps - - Print multiple PDF files with high quality: - duplex -q high *.pdf - - Print the file from STDIN: - cat f2.ps | duplex -EOF -} - -mkdtemp() { - name="$(echo 'mkstemp(template)' | - m4 -D template="${TMPDIR:-/tmp}/m4-tmpname.")" - rm -f "$name" - mkdir "$name" - echo "$name" -} - -n_pages() { - pdftk "$1" dump_data | awk '/NumberOfPages/ { print $2 }' -} - -main() { - if file -b in-tmp | grep -q PostScript; then - ps2pdf in-tmp in.pdf - elif file -b in-tmp | grep -q PDF; then - cp in-tmp in.pdf - else - printf "Don't know how to duplex print input file:\n" >&2 - file in-tmp >&2 - printf '\nGive me either a PostScript or PDF file instead.\n' >&2 - exit 2 - fi - - FULL="$(n_pages in.pdf)" - if [ "$FULL" = '1' ]; then - lp in.pdf - return - fi - - pdftk A=in.pdf cat Aodd output odd.pdf - pdftk A=in.pdf cat Aeven output even.pdf - - NODD="$(n_pages odd.pdf)" - NEVEN="$(n_pages even.pdf)" - - printf 'Printing odd pages...\n' >&2 - lp odd.pdf - printf 'Has printing finished yet? Once it does, reload the pages and hit it enter to continue. ' - read -r < /dev/tty - lp even.pdf - - if [ "$NODD" != "$NEVEN" ]; then - printf '\n' | lp - fi -} - -for flag in "$@"; do - case "$flag" in - --) - break - ;; - --help) - usage - help - exit - ;; - *) - ;; - esac -done - -lpoptions -o PrintQuality=standard -while getopts 'hq:' flag; do - case "$flag" in - q) - case "$OPTARG" in - low) - lpoptions -o PrintQuality=draft - ;; - medium) - lpoptions -o PrintQuality=standard - ;; - high) - lpoptions -o PrintQuality=high - ;; - *) - echo "Bad QUALITY option: \"$OPTARG\"" >&2 - exit 2 - ;; - esac - ;; - h) - usage - help - exit - ;; - *) - usage >&2 - exit 2 - ;; - esac -done -shift $((OPTIND - 1)) - -OLDDIR="$PWD" -cd "$(mkdtemp)" #FIXME -if [ -z "${1:-}" ]; then - cat - > in-tmp - main -else - for f in "$@"; do - # ABS="$(echo "$(cd "$(dirname "$f")"; pwd -P)/$(basename "$f")")" - # echo "$ABS" - cp "$OLDDIR/$(basename "$f")" in-tmp - main - done -fi -- cgit v1.3