mirror of
https://abf.rosa.ru/djam/cups.git
synced 2025-02-23 22:02:46 +00:00
79 lines
2.1 KiB
Bash
79 lines
2.1 KiB
Bash
#!/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=/dev/null
|
|
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
|