#!/bin/bash # tmp dir DIR="$(mktemp -dtp ${TMPDIR-/var/tmp} fbgs-XXXXXX)" test -d "$DIR" || exit 1 trap "rm -rf $DIR" EXIT # parse options fbiopts="" gsopts="" passwd="" device="tiffpack" opt=1 bell="off" helptext=" This program displays PostScript/pdf files using the linux framebuffer device. It is a simple wrapper script for GhostScript and fbi. usage: fbgs [fbgs options] [fbi options] file -b --bell emit a beep when the document is ready -h --help print this help text -p --password a passed to the PDF -fp --firstpage begins on the page -lp --lastpage stops on the page -c --color pages in color -l pages rendered with 100 dpi -xl pages rendered with 120 dpi -xxl pages rendered with 150 dpi -r --resolution choose resolution of dpi Read the fbgs(1) and fbi(1) manpages for more details. " while test "$opt" = "1"; do case "$1" in # fbgs options -b | --bell) bell="on" shift ;; -h | --help) printf "$helptext" exit 1 ;; -p | --password) password="$2" shift; shift ;; -fp | --firstpage) gsopts="$gsopts -dFirstPage=$2" shift; shift ;; -lp | --lastpage) gsopts="$gsopts -dLastPage=$2" shift; shift ;; -c | --color) device="png16m" shift ;; -l) gsopts="$gsopts -r100x100" shift ;; -xl) gsopts="$gsopts -r120x120" shift ;; -xxl) gsopts="$gsopts -r150x150" shift ;; -r | --resolution) gsopts="$gsopts -r$2x$2" shift; shift ;; # fbi options without argument -a | --autozoom | \ --autoup | --noautoup | \ --autodown | --noautodown | \ --fitwidth | --nofitwidth | \ -v | --verbose | --noverbose | \ -u | --random | --norandom | \ -1 | --once | --noonce) fbiopts="$fbiopts $1" shift ;; # fbi options with one argument -T | --vt | \ -s | --scroll | \ -t | --timeout | \ -g | --gamma | \ -f | --font | \ -d | --device | \ -m | --mode) fbiopts="$fbiopts $1 $2" shift; shift ;; # others options -*) echo "unknown option: $1" exit 1 ;; *) opt=0 ;; esac done # run ghostscript echo echo "### rendering pages, please wait ... ###" echo gs -dSAFER -dNOPAUSE -dBATCH \ -sPDFPassword="$password" \ -sDEVICE=${device} -sOutputFile=$DIR/ps%03d.tiff \ $gsopts \ "$1" # tell the user we are done :-) if test "$bell" = "on"; then printf "\a" fi # sanity check pages=`ls $DIR/ps*.tiff 2>/dev/null | wc -l` if test "$pages" -eq "0"; then echo echo "Oops: ghostscript wrote no pages?" echo exit 1 fi # show pages fbi $fbiopts -P $DIR/ps*.tiff