summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2002-06-06 09:41:33 +0000
committerJonas Smedegaard <dr@jones.dk>2002-06-06 09:41:33 +0000
commite0123336f14d683e26cfd35282b738125989f477 (patch)
tree36d626045ff35f60bd22613ec77f12f77a0a08bd
parentb1ed9cba21cc145212c4cd3e7fdd1e9f066d2a66 (diff)
Add new CUPS backend pdfdistiller (really should be in lib...).
-rwxr-xr-xpdfdistiller79
1 files changed, 79 insertions, 0 deletions
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 "<jobname>.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