Talk:Cups
From SME Server
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Here is an adaptation of the pdf printer that is installed by cups-pdfdistiller which won't drop the file in a certain folder on your server, but instead delivers it in the mailbox of the user who printed the file.
#!/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 (kdeprint <at> swing <dot> be) 2001 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA LOGFILE=/var/log/pdf.log function log { if [ "$2" == "" ]; then echo $(date +%c) [notice] $1 >> $LOGFILE else echo $(date +%c) [$2] $1 >> $LOGFILE fi } log "Executable: $PDFBIN" log "Arguments: |$1|$2|$3|$4|$5|$6|" # 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]" log "No arguments supplied" "error" exit 1 fi # get PDF directory from device URI, and check write status PDFDIR=${DEVICE_URI#pdf:} if [ ! -d "$PDFDIR" -o ! -w "$PDFDIR" ]; then log "Directory \"$PDFDIR\" not writable" "error" exit 1 fi PDFBIN=`which ps2pdf14` PRINTTIME=`date +%b%d-%H%M%S` print "PDF directory: $PDFDIR" >> $LOGFILE # generate output filename if [ "$3" = "" ]; then PDFFILENAME="$PDFDIR/unknown.pdf" else # PDFFILENAME="$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 # PDFFILENAME="$PDFDIR/$2-$PRINTTIME.pdf" PDFFILENAME="$3.pdf" fi log "Output file name: $PDFDIR/$PDFFILENAME" # run ghostscript if [ $# -eq 6 ]; then $PDFBIN $6 "$PDFDIR/$PDFFILENAME" else $PDFBIN - "$PDFDIR/$PDFFILENAME" >& /dev/null fi MAILTIME=`date +%c` # Store users e-mailadress in variable named 'TO' # Username is received via the second argument of the modified printcommand of the PDF printer # append @yourdomain.com to create a valid email address DOMAIN=`/sbin/e-smith/db configuration get DomainName` TO=$2@$DOMAIN # Create a temp file to hold the mailbody # Available variables: # $1 - Job number # $2 - User name # $3 - Printjob name # $4 - Number of copies MAIL=$OUTDIR/$2$PRINTTIME.txt echo "" >> $MAIL echo "Hello $2," >> $MAIL echo "Here's your requested PDF file." >> $MAIL echo "" >> $MAIL echo "Job Number : pdf-$1" >> $MAIL echo "Title : $3" >> $MAIL echo "Submitted at : $MAILTIME" >> $MAIL echo "Attached as : $PDFFILENAME." >> $MAIL # Use mutt to generate an email containing the text above and has the PDF attached mutt -a "$PDFDIR/$PDFFILENAME" -i $MAIL -s "$3 (pdf-$1)" $TO log "PDF file \"$PDFFILENAME\" mailed to $TO" rm -rf $MAIL rm -rf "$PDFDIR/$PDFFILENAME" exit 0
You can easily install this script:
- Backup the original file; cp /usr/lib/cups/backend/pdf /usr/lib/cups/backend/pdf.old
-
nano /usr/lib/cups/backend/pdf
Paste the script there end save using Ctrl+O, after that exit with Ctrl+X.
May be usesful add a reference to http://wiki.contribs.org/Printer_Drivers_for_Windows_Workstations
--Normando Hall 09:38, 5 November 2007 (MST)