From e0123336f14d683e26cfd35282b738125989f477 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 6 Jun 2002 09:41:33 +0000 Subject: Add new CUPS backend pdfdistiller (really should be in lib...). --- pdfdistiller | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 pdfdistiller diff --git a/pdfdistiller b/pdfdistiller new file mode 100755 index 0000000..96dec21 --- /dev/null +++ b/pdfdistiller @@ -0,0 +1,79 @@ +#!/bin/sh +# +# This script is intended to be used as a CUPS backend, to create +# PDF file on-the-fly. Just create a printer using the device uri +# pdf:/path/to/dir/. When printing to this printer, a PDF file +# will be generated in the directory specified. The file name will +# be either ".pdf" or "unknown.pdf", depending wether the +# jobname is empty or not. +# +# To use it, simply copy this script to your backend directory, and +# create a printer with the correct URI. That's it. +# +# Copyright (C) Michael Goffioul (goffioul@imec.be) 2001 +LOGFILE=/tmp/pdf.log +PDFBIN=`which ps2pdf` +FILENAME= +# this is borrowed from printpdf script for the filename +PRINTTIME=`date +%b%d-%H%M%S` + +echo "Executable: $PDFBIN" > $LOGFILE +echo "Arguments: |$1|$2|$3|$4|$5|$6|" >> $LOGFILE +echo $# $PRINTTIME >> $LOGFILE + +# case of no argument, prints available URIs +if [ $# -eq 0 ]; then + if [ ! -x "$PDFBIN" ]; then + exit 0 + fi + echo "direct pdf \"Unknown\" \"PDF Writing\"" + exit 0 +fi + +# case of wrong number of arguments +if [ $# -ne 5 -a $# -ne 6 ]; then + echo "Usage: pdf job-id user title copies options [file]" + exit 1 +fi + +# get PDF directory from device URI, and check write status +PDFDIR=${DEVICE_URI#pdf:} +if [ ! -d "$PDFDIR" -o ! -w "$PDFDIR" ]; then + echo "ERROR: directory $PDFDIR not writable" + exit 1 +fi + +echo "PDF directory: $PDFDIR" >> $LOGFILE + +# generate output filename +OUTPUTFILENAME= +if [ "$3" = "" ]; then + OUTPUTFILENAME="$PDFDIR/unknown.pdf" +else + # OUTPUTFILENAME="$PDFDIR/${3//[^[:alnum:]]/_}.pdf" + # I changed this to user name, and the printtime to track down who + # printed the PDF and when, samba printing just uses nobody + + OUTPUTFILENAME="$PDFDIR/$2-$PRINTTIME.pdf" + echo "PDF file: $OUTPUTFILENAME placed in: $PDFDIR" >> $LOGFILE +fi + +echo "Output file name: $OUTPUTFILENAME" >> $LOGFILE + +# run ghostscript +if [ $# -eq 6 ]; then + $PDFBIN $6 $OUTPUTFILENAME +#>& /dev/null +else + $PDFBIN - $OUTPUTFILENAME >& /dev/null +fi + +# modify ownership and permissions on the file +# - world readable +# - owns to user specified in argument +chmod a+r $OUTPUTFILENAME +if [ "$2" != "" ]; then + chown $2 $OUTPUTFILENAME +fi + +exit 0 -- cgit v1.2.3