diff options
author | Jonas Smedegaard <dr@jones.dk> | 2024-01-05 03:28:36 +0100 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2024-01-05 03:28:36 +0100 |
commit | dd2db3ad3dfdd3bb74775b87701c28e0b923da72 (patch) | |
tree | d39130c5f76da11ef4dd39f7679179308777f009 /localpdf2ps2pdf | |
parent | 237216476456202bbd7b209ae819981993e51636 (diff) |
rename localpdf2pdfscreen -> localpdf2ps2pdf, optimize for consumer print by default, and improve help output
Diffstat (limited to 'localpdf2ps2pdf')
-rwxr-xr-x | localpdf2ps2pdf | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/localpdf2ps2pdf b/localpdf2ps2pdf new file mode 100755 index 0000000..686d000 --- /dev/null +++ b/localpdf2ps2pdf @@ -0,0 +1,95 @@ +#!/bin/sh +# +# /usr/local/bin/localpdf2ps2pdf +# Copyright 2008-2023 Jonas Smedegaard <dr@jones.dk> +# +# Refry PDF file. +# + +set -e + +PRG="$(basename "$0")" + +# Default options +PDFTOPSOPTS="-preload -paper match" +PS2PDFOPTS="-dDownsampleColorImages=true -dColorImageResolution=150" + +showhelp() { + cat <<EOF +Usage: $PRG INFILE [ OUTFILE ] [ pdftops opts ] [ -- ps2pdf opts ] + +Defaults: + OUTFILE: INFILE with trailing ".pdf" replaced with "_lowres.pdf". + pdftops: $PDFTOPSOPTS + ps2pdf: $PS2PDFOPTS + +Examples: + $PRG file.pdf -f 7 -l 9 + $PRG file.pdf -- -dPDFA -dPDFACompatibilityPolicy=1 + $PRG file.pdf -- -dPDFSETTINGS=/screen + $PRG file.pdf -level3 -- -dPDFSETTINGS=/prepress + +First example above picks pages 7-9. +Second example above reduces PDF complexity. +Third example reduces image size for screen-only use. +Fourth example preserves complexity and image size for professional use. + +Defaults reduce file size for 300 DPI color print use. + +EOF +} + +exit1() { + echo >&2 "ERROR: $1" + exit 1 +} + +[ $# -gt 0 ] || exit1 "Input file missing" + +infile= +outfile= +pdftopsopts= +pstopdfopts= +while [ $# -gt 0 ]; do + case $1 in + -h|--help) + showhelp + exit 0 + ;; + --) + shift + break + ;; + -*) + pdftopsopts="$pdftopsopts $1" + shift + ;; + *) + if [ -z "$infile" ]; then + infile="$1" + elif [ -z "$outfile" ]; then + outfile="$1" + else + exit1 "Too many parameters" + fi + shift + ;; + esac +done +ps2pdfopts="$@" + +# Use defaults if not overridden +outfile="${outfile:-$(basename "$infile" .pdf)_lowres.pdf}" +pdftopsopts="${pdftopsopts:-$PDFTOPSOPTS}" +ps2pdfopts="${ps2pdfopts:-$PS2PDFOPTS}" + +[ ! -e "$outfile" ] || exit1 "Output file already exists" + +tmpfile=$(mktemp -t "$PRG.XXXXXXXXXX") || exit 1 + +pdftops $pdftopsopts "$infile" "$tmpfile" || rm "$tmpfile" +ps2pdf $ps2pdfopts "$tmpfile" "$outfile" + +rm "$tmpfile" + +exit 0 |