blob: 686d000f5b441cc338cd9e8a14d2af03deb3b34a (
plain)
- #!/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
|